为什么将文档类变成2帧后,uncaughtError事件不触发了?


使用 [Frame(factoryClass="PreLoader")] 将文档类变成2帧后,原来在Main中的uncaughtError事件不触发了。
在Main中侦听该事件:

   
  if (loaderInfo.hasOwnProperty("uncaughtErrorEvents")) {
  
loaderInfo["uncaughtErrorEvents"].addEventListener("uncaughtError", uncaughtErrorHandler);
}

如果Main文件中不加标签 [Frame(factoryClass="PreLoader")] ,该事件是可以触发的。

as3 actionscript

苏我屠自古 12 years, 8 months ago

今天无意中想到了问题所在:
在Main中的侦听事件为:

   
  if (loaderInfo.hasOwnProperty("uncaughtErrorEvents")) {
  
loaderInfo["uncaughtErrorEvents"].addEventListener("uncaughtError", uncaughtErrorHandler);
}

这里的 loaderInfo == root.loaderInfo 。而采用 [Frame(factoryClass="PreLoader")] 后,文档类实际上变成了 PreLoader ,因此,侦听 uncaughtErrorEvents ,需要用 PreLoader.loaderInfo ,再查看了 PreLoader 中初始化 Main 类的代码:

   
  stage.addChild(new (getDefinitionByName("Main") as Class));
 

这句话将Main添加到Stage中,导致 Main.root==stage 了,因此捕获错误失败。
只需要修改这句为 this.addChild(new (getDefinitionByName("Main") as Class)); 即可。

MrFion answered 12 years, 8 months ago

Your Answer