123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import GUIProxy from './GUIProxy';
- export class GUIManager{
-
- //UI 注册信息
- private m_guiMap:Map<number,GUIProxy>=new Map<number,GUIProxy>();
- //正在显示的UI
- private m_showing:Map<number,GUIProxy>=new Map<number,GUIProxy>();
- private m_showingList:GUIProxy[]=[];
- /**
- * 注册UI
- * @param key 全局唯一KEY
- * @param assetBundle 资源所在AssetBundle
- * @param packageName 包名称
- * @param resName UI界面
- * @param mediatorClass UI界面类
- */
- RegisterGUI(key:number,assetBundle:string,packageName:string,resName:string,mediatorClass:any):void{
- if(this.m_guiMap.has(key)){
- throw new Error("UI重复注册:"+key);
- }
- let guiProxy:GUIProxy=new GUIProxy(key,assetBundle,packageName,resName,mediatorClass);
- this.m_guiMap.set(key,guiProxy);
- }
- /**
- * 取消注册
- * @param key UI 全局唯一KEY
- */
- Unregister(key:number):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("无法取消未注册的UI:"+key);
- }
- }
-
- /**
- * 显示UI
- * @param key
- * @param data
- */
- Show(key:number,data?:any):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("未注册的UI:"+key);
- }
- let guiProxy:GUIProxy;
- //已经显示
- if(this.m_showing.has(key)){
- return;
- }else{
- guiProxy=this.m_guiMap.get(key);
- guiProxy.Show(data);
- this.m_showing.set(key,guiProxy);
- this.m_showingList.push(guiProxy);
- }
- }
- /**
- * 隐藏UI
- * @param key
- */
- Hide(key:number):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("未注册的UI:"+key);
- }
- let guiProxy:GUIProxy;
- //已经显示
- if(this.m_showing.has(key)==false){
- return;
- }else{
- this.m_showing.delete(key);
- guiProxy=this.m_guiMap.get(key);
- guiProxy.Hide();
- let index:number=this.m_showingList.indexOf(guiProxy);
- this.m_showingList.splice(index,1);
- }
- }
- /**
- * 心跳
- * @param dt
- */
- Tick(dt:number):void{
- let count:number=this.m_showingList.length;
- if(count==0){
- return;
- }
- for (let index = 0; index < count; index++) {
- const element = this.m_showingList[index];
- element.Tick(dt);
- }
- }
- /**
- * 单例
- */
- private static instance:GUIManager;
- public static get single():GUIManager{
- if(this.instance==null){
- this.instance=new GUIManager();
- }
- return this.instance;
- }
- }
|