当我尝试直接加载uncaughtErrorEvents
调度程序时,一切都很好,但是当我尝试由另一个swf加载相同的代码时,我得到了一个引用错误。
protected function onAddedToStage(e:Event):void {
trace("Flash version: " + Capabilities.version);
try {
loaderInfo.uncaughtErrorEvents.addEventListener("uncaughtError", onUncaughtError);
trace("YAY!");
} catch (e:Error) {
trace(e);
}
}
直接加载时的输出(在浏览器中):
Flash version: MAC 10,1,53,64
YAY!
由另一个“加载程序”SWF加载时的输出:
Flash version: MAC 10,1,53,64
ReferenceError: Error #1069: Property uncaughtErrorEvents not found on flash.display.LoaderInfo and there is no default value.
如果其他人能复制这一点,我会很感激。
编辑:也尝试了stage.loaderInfo
,而不仅仅是loaderInfo
。同样的问题...
3条答案
按热度按时间wmtdaxz31#
已加载对象的loaderInfo与已初始化对象的loaderInfo不同,并且通过Loader类删除的内容也不同。文档中规定,您必须将侦听器添加到加载程序上的uncaughtErrorEvents,而不是与之关联的loaderInfo:
若要侦测载入之SWF中发生的未捕捉错误,请使用Loader.uncaughtErrorEvents属性,而不要使用Loader.contentLoaderInfo.uncaughtErrorEvents属性。
-livedocs链接
所以你可能要么把它添加到加载器而不是加载器,要么检测是否加载,然后把它添加到父级或其他东西。我知道不优雅,但我能想到的就是绕过它。
af7jpaap2#
请参阅以下链接:https://bugs.adobe.com/jira/browse/FP-4978
Flash Player中存在一个错误,该错误会影响模块上的uncaughtErrorEvents处理程序
如果您在Adobe的JIRA中注册并投票,该错误将很快得到修复...
rxztt3cl3#
我将事件侦听器附加到'root',这对我很有效:
在调试Flash Player中,这仍然会出错,但在非调试版本中,错误将出现在Flash Player的对话框中,然后处理程序将做出响应。要阻止对话框出现,请添加:
因此:
我在AIR中使用了它,但我认为它也适用于标准的AS3项目。