Egret-我的疑问:自定义组件加载skin的操作

我尝试将自己绘制的tabbar封装为自定义组件使用

// TypeScript file
namespace ui {
    export class GameTab extends eui.Component {
        private checklist;
        constructor() {
            super();
            this.skinName = "resource/eui_skins/GameMainTab.exml";this.tabInit();
        }
        private tabInit(): void {
            //对自定义组件中的子组件进行了操作
        }
    }
}

对子组件进行操作,报出了错误

Data.ts:18 Uncaught TypeError: Cannot set property 'selected' of undefined

明显是ui没有加载完成时操作组件 报的错

那我们第一时间想到的问题一定是 egret有没有相应的事件表示ui加载完成

那么我们将初始化(对ui组件的操作)作为事件处理函数即可

namespace ui {
    export class GameTab extends eui.Component {
        private checklist;
        constructor() {
            super();
            this.skinName = "resource/eui_skins/GameMainTab.exml";
            this.addEventListener(eui.UIEvent.COMPLETE, this.tabInit, this);
            // this.tabInit();
        }
        private tabInit(): void {
            //对自定义组件中的子组件进行了操作
        }
    }
}
eui.UIEvent.COMPLETE  egret中 UI加载完成的事件
posted @ 2020-03-20 11:10  前端法师  阅读(733)  评论(0)    收藏  举报