import { _decorator, Button, Component, Constructor, Label, Node, PageView, Sprite } from 'cc'; import { GameMgr } from './GameMgr'; const { ccclass, property } = _decorator; @ccclass('ModulerBase') export class ModulerBase extends Component { // protected _nodes: Map = new Map(); protected _nodeName: string = "Node"; get NodeName() { return this._nodeName }; set NodeName(name: string) { this._nodeName = name } // init(){ // this._visit(this.node); this.onStart(); // } // protected onStart() { } // //刷新 refresh(){ } //获取管理者中的其他模块 getModuler(type: Constructor): T{ return GameMgr.Instance.getModuler(type); } //销毁自己 removeSelf(){ this.node.destroy(); this.clearSelf(); } protected clearSelf(){ } // private _visit(node: Node) { if (node.name.startsWith("_")) { this._nodes.set(node.name, node); } for (const child of node.children) { this._visit(child); } } show(){ this.node.active = true; this.use; } showing(){ return this.node.active; } hide(clear: boolean = false){ this.unUse(); if(clear){ this.node.destroy(); return; } this.node.active = false; } onBtnClick(name: string, callback: Function, ...arg){ const node = this._nodes.get(name); if(!node) { Error("No find"); return; } if(node){ node.on(Button.EventType.CLICK,()=>{ callback.apply(this,[...arg]); }) } } onPageView(name: string, type, callback: Function){ this._nodes.get(name).on(type,callback); } getPageView(name: string): PageView{ return this._nodes.get(name).getComponent(PageView); } getNode(name: string): Node{ return this._nodes.get(name); } getLabel(name: string): Label{ return this.getNode(name).getComponent(Label); } getSprite(name: string): Sprite{ return this.getNode(name).getComponent(Sprite); } protected use(){ } protected unUse(){ } // }