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() { } // }