在使用exml关联id的时候死活获取不到对象,实在是找不到哪里的问题,怎么打印出来都是undefined,真的是哭了
class SceneBegin extends eui.Component implements eui.UIComponent {
public beginBtn:eui.Button;
public constructor() {
super();
this.touchEnabled = true;
}
protected partAdded(partName:string,instance:any):void
{
super.partAdded(partName,instance);
}
protected childrenCreated():void
{
super.childrenCreated();
this.init();
}
private init() {
// 这里的 once 其实就是 addEventListener 的意思,只不过它只监听一次
this.beginBtn.once(egret.TouchEvent.TOUCH_TAP, this.start, this);
}
private start() {
// 在舞台中添加游戏场景
this.parent.addChild(new SceneGame());
// 在舞台中移除初始场景
this.parent.removeChild(this);
}
}
后来发现exml是异步的,页面出现的时候异步还未加载完成,在childrenCreated
中加一个完成的监听事件
//将this.init();改成下面的
//这里加一个完成的监听事件,因为exml变成了异步加载,资源没有被加载完成所以就监听不成功
this.addEventListener(eui.UIEvent.COMPLETE,this.init,this);
真的好坑!!!文档写了个寂寞
令人哭泣
第二天写完项目打包后发现又没反应了,好的我知道了。然后把这个又改回来this.init()
就可以了,再去调试就只能用this.init()
这是一个bug吧