// Layout_Collect.ts import { _decorator, Button, Component, Node, EventHandler, Label, SpriteFrame } from 'cc'; import List from '../../scripts/Component/List/List'; import { ui_collest_item } from './ui_collest_item'; import { rootMgr } from '../../module_basic/scene/RootMgr'; import { RewardDataManager } from '../../module_basic/data/RewardDataManager'; const { ccclass, property } = _decorator; @ccclass('Layout_Collect') export class Layout_Collect extends Component { @property(Button) cloose_btn: Button; // 列表 @property(List) list1: List = null; protected start() { // 加载奖励数据 RewardDataManager.instance.loadRewards(); // 监听奖励解锁事件 rootMgr.game.evt.on('rewardUnlocked', this.onRewardUnlocked, this); // 绑定列表渲染事件 if (this.list1) { const renderEventHandler = new EventHandler(); renderEventHandler.target = this.node; renderEventHandler.component = 'Layout_Collect'; renderEventHandler.handler = 'onListRender1'; this.list1.renderEvent = renderEventHandler; this.updateList(); } } // 更新列表显示 private updateList() { if (this.list1) { this.list1.numItems = RewardDataManager.instance.getAllRewards().length; } } // 奖励解锁事件处理 private onRewardUnlocked() { this.updateList(); } onListRender1(item: any, idx: number) { let collectItem = item.getComponent(ui_collest_item); if (collectItem) { const rewards = RewardDataManager.instance.getAllRewards(); if (idx < rewards.length) { const reward = rewards[idx]; // 设置奖励图片 if (collectItem.bottlesSp && collectItem.rewardSprites[idx]) { collectItem.keySp.spriteFrame = collectItem.rewardSprites[idx]; collectItem.bottlesSp.spriteFrame = collectItem.rewardSprites[idx]; collectItem.keySp.spriteFrame = collectItem.rewardSprites[idx]; } if (collectItem.LabelName) { collectItem.LabelName.string = reward.name; } if (collectItem.keyBgNode && collectItem.openBgNode) { collectItem.keyBgNode.active = !reward.unlocked; collectItem.openBgNode.active = reward.unlocked; } } } } protected onDestroy(): void { rootMgr.game.evt.off('rewardUnlocked', this.onRewardUnlocked, this); } }