【发布时间】:2009-12-14 07:19:40
【问题描述】:
一、背景:
我正在创建一个 Flex 应用程序,其中包含一个显示各种动态加载的 SWF 的组件,一次一个(有点像信息亭)。这些加载的 SWF 是在 Flash IDE 中创建的,而不是在 Flex 中创建的。它们不会由我们创建(我们将提供 .fla 模板,仅此而已),因此我将它们加载到单独的 SecurityDomain 中。
我的问题:
我希望应用程序能够调用加载的 SWF 中的方法。为此,我是否只需在加载的 SWF 的启动过程中调用 Security.allowDomain("domain original app was loaded from") ?
我希望加载的 SWF 能够引发应用程序捕获的事件。我可以通过SWFLoader.swfBridge 属性完成此操作吗?
我正在为加载的 SWF 中的方法定义一个接口。但是,我不想将实施留给客户。相反,我想提供另一个包含接口实现的 SWF,并使其成为客户将其包含在其 SWF 中的约束。我对 Flash 创作环境不是很熟悉,它是如何工作的,以便接口实现 SWF 以 Flex 可以访问的方式公开其方法?有没有办法对 SWF 进行签名,以便 Flex 应用程序知道它正在处理原始文件,而不是欺骗? Flex 代码将如何传递参数,因为它跨越 SecurityDomain 边界——是否涉及编组(例如,如果我想传递字典或某种对象图)?
Flex 应用程序在其生命周期内可能会加载数百个此类较小的其他 SWF。如何确保它不会继续占用更多内存?我计划使用 SWFLoader.unloadAndStop() 并清除引用它的 Flex 对象中的所有引用。这够了吗?已加载的 SWF 的 AppDomain 是否会自动拆除,以便类定义不再在内存中?
谢谢,
卡提克
【问题讨论】:
-
Adobe 论坛的交叉引用帖子(带有有用的答案),供遇到此问题的人使用:forums.adobe.com/message/2458288
标签: apache-flex flash security