| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | import { _decorator, Component, instantiate, Node, Sprite, UITransform, Vec2 } from 'cc';import { resMgr } from '../../Frames/ResourcesMgr';import { RoleCard } from './RoleCard';import { RoleData } from '../../DataItem/ItemData';import { dataMgr } from '../../Frames/DataManager';const { ccclass, property } = _decorator;@ccclass('RoleList')export class RoleList extends Component {    _content: Node = null;    private _roleData: RoleData[] = null;    private _characterSlot: Node = null;    roleImgName: string = null;    roleCardState: boolean = null;    protected onLoad() {        this._roleData = dataMgr.getAllDataByName("RoleCardData");        this._content = this.node.getChildByPath("view/content");        this._characterSlot = this.node.parent.getChildByPath('SelectTroops_Bottom/CharacterSlot');    }    protected start(): void {        this._roleData.forEach((values, index) => {            this._createRoleCard(index);        })    }    //创建角色卡    private _createRoleCard(id: number) {        const roleCard: Node = instantiate(resMgr.getPrefab("RoleCard-Big"));        roleCard.parent = this._content;        roleCard.getComponent(RoleCard).init(id, this._roleData);    }    //打开阴影遮罩    openShadow(pos: Vec2) {        for (const roleCard of this._content.children) {            const box = roleCard.getComponent(UITransform).getBoundingBoxToWorld();            if (box.contains(pos)) {                //获取 RoleList 节点下的子节点 content 的子节点的脚本                const roleCardTS = roleCard.getComponent(RoleCard);                //如果Shadow(阴影遮罩)是关闭的                if (!roleCardTS.getShadowState()) {                    //遍历角色卡槽的子节点                    for (const card of this._characterSlot.children) {                        let sprite = card.getChildByName("Sprite").getComponent(Sprite);                        let label = card.getChildByName("Label");                        if(label.active){                            return;                        }                        //如果角色卡槽没有角色图片 以及 "解锁卡槽" 节点的关闭的                        if (!sprite.spriteFrame && !label.active) {                            //打开Shadow                            roleCardTS.isOpenShadow(true);                            sprite.spriteFrame = resMgr.getSpriteFrame(roleCardTS.getRoleImgName());                            return;                        }                    }                }            }        }    }}
 |