Egret3D 5.3.0【Egret2D + EUI 窗口显示】

转自:http://www.bugcreater.com/699.html

 

class GameUIScript extends paper.Behaviour
{
      onStart() {
            //egret3d.Egret2DRenderer 可以添加egret2D的显示(包括EUI)进行渲染
            const renderer = this.gameObject.getComponent(egret3d.Egret2DRenderer);
            const adapter = new egret3d.MatchWidthOrHeightAdapter();
            adapter.setResolution(egret3d.stage.screenViewport.w, egret3d.stage.screenViewport.h);
            renderer.screenAdapter = adapter;
            let assetAdapter = new AssetAdapter();
            egret.registerImplementation(“eui.IAssetAdapter”, assetAdapter);
            egret.registerImplementation(“eui.IThemeAdapter”, new ThemeAdapter());
            let theme = new eui.Theme(“resource/2d/default.thm.json”, renderer.stage);
            theme.addEventListener(eui.UIEvent.COMPLETE, onThemeLoadComplete, this);
            //2D的资源需要等这个回调才加载完毕
            function onThemeLoadComplete() {
                this.uiLayer = new eui.UILayer();
                this.uiLayer.touchEnabled = false;
                renderer.root.addChild(this.uiLayer);
                 //TODO
            }
        }
        onUpdate() {
        }
    }
}
//脚本组件。生命周期的顺序。
paper.Behaviour
和Unity类似 :
onAwake();
onStart();
onUpdate();
……等
class ThemeAdapter implements eui.IThemeAdapter {
        public getTheme(url: string, onSuccess: Function, onError: Function, thisObject: any): void {
            function onResGet(e: string): void {
                onSuccess.call(thisObject, e);
            }
            function onResError(e: RES.ResourceEvent): void {
                if (e.resItem.url == url) {
                    RES.removeEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR, onResError, null);
                    onError.call(thisObject);
                }
            }
            if (typeof generateEUI !== ‘undefined’) {
                egret.callLater(() => {
                    onSuccess.call(thisObject, generateEUI);
                }, this);
            }
            else if (typeof generateEUI2 !== ‘undefined’) {
                RES.getResByUrl(“resource/gameEui.json”, (data, url) => {
                    window[“JSONParseClass”][“setData”](data);
                    onResGet(data);
                    egret.callLater(() => {
                        onSuccess.call(thisObject, generateEUI2);
                    }, this);
                }, this, RES.ResourceItem.TYPE_JSON);
            }
            else {
                RES.addEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR, onResError, null);
                RES.getResByUrl(url, onResGet, this, RES.ResourceItem.TYPE_TEXT);
            }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值