123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import { GUIManager } from "./GUIManager";
- import GUIMediator from "./GUIMediator";
- import LayerManager from "./layers/LayerManager";
- /**
- * UI代理
- */
- export default class GUIProxy
- {
- key:number;
- assetBundleName:string;
- assetBundle:cc.AssetManager.Bundle;
- packageName:string;
- resName:string;
- mediatorClass:any;
- uiNode:fgui.GComponent;
- mediator:GUIMediator;
- /**
- * 状态 0 未加载 1加载中 2加载完成
- */
- state:number=0;
- /**
- * 是否显示
- */
- isShowing:boolean;
- data:any;
- constructor(key:number,assetBundle:string,packageName:string,resName:string,mediatorClass:any){
- this.key=key;
- this.assetBundleName=assetBundle;
- this.packageName=packageName;
- this.resName=resName;
- this.mediatorClass=mediatorClass;
- }
- /**
- * 显示(内部接口)
- * @param data
- */
- Show(data?:any):void{
- this.data=data;
- this.isShowing=true;
- if(this.state==0){
- this.LoadUIAssets();
- }else if(this.state==1){
- //加载中啥也不干
- }else{
- this.AddToLayer();
- }
- }
-
- /**
- * 内部接口
- */
- Hide():void{
- if(this.mediator){
- LayerManager.single.RemoveFormeLayer(this.mediator.LayerIndex,this.uiNode);
- this.mediator.Hide();
- }
- this.isShowing=false;
- }
- /**
- * 心跳
- * @param dt
- */
- Tick(dt:number):void{
- if(this.mediator!=null){
- this.mediator.Tick(dt);
- }
- }
- /**
- * 添加到层上并显示
- */
- private AddToLayer():void{
- this.uiNode.setSize(fgui.GRoot.inst.width,fgui.GRoot.inst.height);
- LayerManager.single.AddToLayer(this.mediator.LayerIndex,this.uiNode);
- this.mediator.Show(this.data);
- }
-
- private LoadUIAssets(){
- this.state=1;
- this.assetBundle=cc.assetManager.getBundle(this.assetBundleName);
- if(this.assetBundle==null){
- cc.assetManager.loadBundle(this.assetBundleName,this.OnLoadAssetBundleComplete.bind(this));
- }else{
- this.StartLoadUIPackage();
- }
- }
- private OnLoadAssetBundleComplete(err:Error,bundle:cc.AssetManager.Bundle):void{
- if(err){
- throw new Error("UI所在AssetBundle"+this.assetBundleName+"加载出错!");
- }
- this.assetBundle=bundle;
- this.StartLoadUIPackage();
- }
- private StartLoadUIPackage():void{
- fgui.UIPackage.loadPackage(this.assetBundle,this.packageName,this.OnLoadUIAssetComplete.bind(this));
- }
-
- private OnLoadUIAssetComplete(error: Error):void{
- if(error!=null){
- throw new Error("加载UI资源包出错:"+this.packageName);
- }
- this.state=2;
- this.uiNode=fgui.UIPackage.createObject(this.packageName,this.resName).asCom;
- this.mediator=new this.mediatorClass();
- this.mediator.uiKey=this.key;
- this.mediator._view=this.uiNode;
- //添加到层
- if(this.isShowing){
- this.AddToLayer();
- }
- }
- /**
- * 获取UI所属层
- */
- get LayerIndex(){
- return 3;
- }
- }
|