【问题标题】:Can't seem to listen for UncaughtErrorEvent for SubApplication loaded by SWFLoader似乎无法监听 SWFLoader 加载的 SubApplication 的 UncaughtErrorEvent
【发布时间】:2011-10-14 13:43:56
【问题描述】:

我有一个主 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

谢谢!

【问题讨论】:

    标签: flash apache-flex swfloader uncaught-exception subapplication


    【解决方案1】:

    我发现将 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 有关示例,请参见提交的错误的附件。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 感谢您的建议。 Alex 表示“这是因为 Modules 立即取消引用模块 SWF 的 loaderInfo,以便自动卸载模块。”虽然 ModuleLoader 和 SWFLoader 都在底层使用 flash.display.Loader 来完成工作,但与模块不同,SubApplications 不会取消引用已加载的 SWF 的 loaderInfo。我能够在适当的时间附加我的事件侦听器(在加载的子应用程序的 applicationComplete 事件之后),我可以在调试器中看到它附加,但它没有被调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多