我有一个主Flex应用程序('A.swf')通过SWFLoader加载一个SubApplication (在‘B.swf’中定义),我需要从SubApplication监听UncaughtErrorEvent。当我从SubApp ('B.swf')抛出一个错误时,我不能让我的事件侦听器被调用。
在阅读了UncaughtErrorEvent和UncaughtErrorEvents的asDoc之后,我已经在A.swf的loaderInfo ( 'outter‘主应用程序)和B.swf的loaderInfo中添加了一个事件侦听器(尽管文档说在这里不这样做,它是捕获和冒泡阶段的事件序列的一部分……)以及SWFLoader内部FlexLoader.uncaughtErrorEvent (根据文档),如下所示:
swfLoader.content.loaderInfo.loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorFunction ); 当Loader.uncaughtErrorEvents中的SubApplication引发错误时,B.swf上的事件侦听器设置不会触发。相反,主应用程序(A.swf) loaderInfo上的侦听器将触发。此外,A.swf的loaderInfo接收到的事件的eventphase等于'EventPhase.AT_TARGET‘,asDoc表示只应在捕获和冒泡阶段调度该事件。
我做得不对吗?有什么想法或建议吗?
'A.swf‘和'B.swf’都是用FlexSDK4.1和Flash Player 10.1编译的。浏览器是运行Flash debug player10.3的FireFox
谢谢!
发布于 2011-08-02 21:39:37
我发现,将SDK库设置为合并到A.swf和B.swf的代码中,可以让UnCaughtErrorEvents以正确的方式进行调度。
当使用基于MX的Flex应用程序和通过共享运行库链接的SDK库( Flash Builder中的默认库)时,它不会调度。
此外,它还可以与带有RSL或合并到代码中的纯SPARK Flex应用程序一起工作。
请参阅此处的讨论:http://forums.adobe.com/message/3835326
提交的Flex bug在这里:http://bugs.adobe.com/jira/browse/SDK-30996有关示例,请参阅已提交的错误的附件。
发布于 2011-07-28 05:56:24
看看Alex Harui的博客文章,这应该是可行的。http://blogs.adobe.com/aharui/2011/04/catching-uncaughterror-in-flex-modules.html
https://stackoverflow.com/questions/6850084
复制相似问题