2

我有一个主要的 Flex 应用程序('A.swf')通过 SWFLoader 加载一个子应用程序(在'B.swf'中定义),我需要从子应用程序监听 UncaughtErrorEvent。当我从 SubApp ('B.swf') 中抛出错误时,我无法调用我的事件侦听器。

在阅读了 UncaughtErrorEvent 和 UncaughtErrorEvents 的 asDoc 之后,我向 A.swf 的 loaderInfo(“外部”主应用程序)和 B.swf 的 loaderInfo 添加了一个事件侦听器(尽管文档说不要在这里这样做,它是事件的一部分捕获和冒泡阶段中的序列...)以及 SWFLoader 内部 FlexLoader.uncaughtErrorEvent (每个文档),如下所示:

swfLoader.content.loaderInfo.loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorFunction );  

当 B.swf 中的 SubApplication 引发错误时,Loader.uncaughtErrorEvents 上的事件侦听器设置不会触发。相反,主应用程序 (A.swf) loaderInfo 上的侦听器会触发。此外,A.swf 的 loaderInfo 接收到的事件的 eventphase 等于“EventPhase.AT_TARGET”,asDoc 说它只能在捕获和冒泡阶段调度。

我这样做不正确吗?有什么想法或建议吗?

“A.swf”和“B.swf”均使用 Flex SDK 4.1、Flash Player 10.1 编译。浏览器是运行 Flash 调试播放器 10.3 的 FireFox

谢谢!

4

2 回答 2

2

我发现将 SDK 库设置为合并到 A.swf 和 B.swf 的代码中可以让 UnCaughtErrorEvents 以正确的方式调度。

在将基于 MX 的 Flex 应用程序与通过共享运行时库(Flash Builder 中的默认设置)链接的 SDK 库一起使用时,它不会调度。

此外,它还可以与带有 RSL 或合并到代码中的纯 SPARK Flex 应用程序一起使用。

请参阅此处的讨论:http ://forums.adobe.com/message/3835326

在此处提交 Flex 错误:http: //bugs.adobe.com/jira/browse/SDK-30996 有关示例,请参见提交错误的附件。

于 2011-08-02T13:39:36.813 回答
0

请参阅 Alex Harui 的博客文章,应该可以。 http://blogs.adobe.com/aharui/2011/04/catching-uncaughterror-in-flex-modules.html

于 2011-07-27T21:56:23.863 回答