| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- import { _decorator, Button, Component, Node, PageView } from 'cc';
 
- const { ccclass, property } = _decorator;
 
- export enum UIType{
 
-     PAGE,
 
-     WIDGET,
 
-     POPWIN,
 
- }
 
- @ccclass('UIBase')
 
- export class UIBase extends Component {
 
-     protected _nodes: Map<string, Node> = new Map();
 
-     protected _uiName: string = "ui";
 
-     get UIName(){ return this._uiName;}
 
-     set UIName(name: string){this._uiName = name;}
 
-     //如果使用ui都要进行相同的初始化
 
-     init(){
 
-         this._visit(this.node)
 
-         //多态
 
-         this.onStart();
 
-     }
 
-     //各个ui都有不同的初始化行为
 
-     protected onStart(){
 
-     }
 
-     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 = true){
 
-         this.unUse();
 
-         if(clear){
 
-             this.node.destroy();
 
-             return;
 
-         }
 
-         this.node.active = false;
 
-     }
 
-     //多态
 
-     //用它的时候
 
-     protected use(){
 
-     }
 
-     //不用它的时候
 
-     protected unUse(){
 
-     }
 
-     //UI 事件
 
-     //按钮点击
 
-     onBtnClick(name: string, callback: Function, ...arg){
 
-         const node = this._nodes.get(name);
 
-         if(node){
 
-             node.on(Button.EventType.CLICK,()=>{
 
-                 //apply指定函数的this指向 并且立即执行
 
-                 //参数1 就是函数执行过程中的this指向
 
-                 callback.apply(this, [...arg]);
 
-             })
 
-         }
 
-     }
 
-     //pageView的事件
 
-     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);
 
-     }
 
-     onMsg(msg: string, callback: Function){
 
-     }
 
- }
 
 
  |