SignItem.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const { ccclass, property } = cc._decorator;
  2. /**
  3. * 签到条目 数据分发
  4. * @author 薛鸿潇
  5. */
  6. @ccclass
  7. export default class SignItem extends cc.Component {
  8. @property({ type: cc.Node, displayName: '位置组件' })
  9. private sign_icon_pos: cc.Node[] = [];
  10. @property({ type: cc.Prefab })
  11. private pre_icon: cc.Prefab = null!;
  12. @property({ type: cc.Prefab })
  13. private pre_bigIcon: cc.Prefab = null!;;
  14. /** icon节点容器 */
  15. private arr_icon: Array<cc.Node> = [];
  16. onLoad() {
  17. }
  18. start() {
  19. }
  20. /**
  21. * list_data
  22. * @param list_data 数据列表
  23. */
  24. public async setItemData(list_data) {
  25. await this.initItem(list_data);
  26. }
  27. /**
  28. * 数据分发
  29. * @param list_data 数据列表
  30. */
  31. private initItem(list_data) {
  32. if (list_data[0] && list_data[1] && list_data[2]) {
  33. const n_count = this.sign_icon_pos.length;
  34. for (let i = 0; i < n_count; i++) {
  35. let item_data = list_data[i];
  36. let icon_item = this.arr_icon[i];
  37. if (!icon_item) {
  38. icon_item = cc.instantiate(this.pre_icon)
  39. icon_item.parent = this.node;
  40. icon_item.setPosition(this.sign_icon_pos[i].getPosition());
  41. this.arr_icon[i] = icon_item;
  42. }
  43. let comp_info = icon_item.getComponent('SignIconItem');
  44. comp_info.setItemData(item_data);
  45. }
  46. }
  47. else {
  48. let item_data = list_data[0];
  49. let icon_item = cc.instantiate(this.pre_bigIcon)
  50. icon_item.parent = this.node;
  51. icon_item.setPosition(cc.Vec2.ZERO);
  52. let comp_info = icon_item.getComponent('SignIconBigItem');
  53. comp_info.setItemData(item_data);
  54. }
  55. }
  56. }