car_lib_page_item.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { _decorator, Component, instantiate, Layout, Node, Prefab, UITransform } from 'cc';
  2. import { car_item_data } from '../../data';
  3. import { userDataManager } from '../../manager/userDataManager';
  4. import { car_lib_list_item } from './car_lib_list_item';
  5. const { ccclass, property } = _decorator;
  6. @ccclass('car_lib_page_item')
  7. export class car_lib_page_item extends Component {
  8. @property(Node) list:Node = null
  9. @property(Node) list_content:Node = null
  10. @property(Prefab) list_item:Prefab = null
  11. private m_index = -1
  12. private m_data_list:car_item_data[] = []
  13. private m_click_cb = null
  14. protected start(): void {
  15. let list_content_size = this.list_content.getComponent(UITransform).contentSize
  16. let item_contenteSize = instantiate(this.list_item).getComponent(UITransform).contentSize
  17. let horizontal_padding = (list_content_size.width - item_contenteSize.width * 2) / 3
  18. if(horizontal_padding > 0) {
  19. this.list_content.getComponent(Layout).paddingLeft = horizontal_padding
  20. this.list_content.getComponent(Layout).paddingRight = horizontal_padding
  21. this.list_content.getComponent(Layout).spacingX = horizontal_padding
  22. }
  23. }
  24. init(index, data_list:car_item_data[], selected_cb, click_cb) {
  25. this.m_index = index
  26. this.m_data_list = data_list
  27. this.m_click_cb = click_cb
  28. this.list_content.removeAllChildren()
  29. for (let index = 0; index < data_list.length; index++) {
  30. const element = data_list[index];
  31. let is_jiesuo = userDataManager.user_car_list.car_list.some(obj => obj === element.id)
  32. let item = instantiate(this.list_item)
  33. item.parent = this.list_content
  34. let item_component = item.getComponent(car_lib_list_item)
  35. item_component.initView(element, index, this.onClickListItem.bind(this))
  36. if(is_jiesuo) {
  37. item_component.setJiesuoSelectedStatus()
  38. } else {
  39. item_component.setJiesuoUnselectedStatus()
  40. }
  41. if(userDataManager.user_car_list.default_car_id == element.id) {
  42. item_component.setSelectedStatus()
  43. if(selected_cb) { selected_cb(item_component) }
  44. } else {
  45. item_component.setUnselectedStatus()
  46. }
  47. }
  48. }
  49. public getDataList():car_item_data[]{
  50. return this.m_data_list
  51. }
  52. public getIndex():number {
  53. return this.m_index
  54. }
  55. private onClickListItem(item:car_lib_list_item) {
  56. if(this.m_click_cb) {
  57. this.m_click_cb(this,item)
  58. }
  59. }
  60. }