【问题标题】:Flex Application Interaction with Loaded Flash SWFsFlex 应用程序与加载的 Flash SWF 的交互
【发布时间】:2009-12-14 07:19:40
【问题描述】:

一、背景:

我正在创建一个 Flex 应用程序,其中包含一个显示各种动态加载的 SWF 的组件,一次一个(有点像信息亭)。这些加载的 SWF 是在 Flash IDE 中创建的,而不是在 Flex 中创建的。它们不会由我们创建(我们将提供 .fla 模板,仅此而已),因此我将它们加载到单独的 SecurityDomain 中。

我的问题:

  1. 我希望应用程序能够调用加载的 SWF 中的方法。为此,我是否只需在加载的 SWF 的启动过程中调用 Security.allowDomain("domain original app was loaded from") ?

  2. 我希望加载的 SWF 能够引发应用程序捕获的事件。我可以通过SWFLoader.swfBridge 属性完成此操作吗?

  3. 我正在为加载的 SWF 中的方法定义一个接口。但是,我不想将实施留给客户。相反,我想提供另一个包含接口实现的 SWF,并使其成为客户将其包含在其 SWF 中的约束。我对 Flash 创作环境不是很熟悉,它是如何工作的,以便接口实现 SWF 以 Flex 可以访问的方式公开其方法?有没有办法对 SWF 进行签名,以便 Flex 应用程序知道它正在处理原始文件,而不是欺骗? Flex 代码将如何传递参数,因为它跨越 SecurityDomain 边界——是否涉及编组(例如,如果我想传递字典或某种对象图)?

  4. Flex 应用程序在其生命周期内可能会加载数百个此类较小的其他 SWF。如何确保它不会继续占用更多内存?我计划使用 SWFLoader.unloadAndStop() 并清除引用它的 Flex 对象中的所有引用。这够了吗?已加载的 SWF 的 AppDomain 是否会自动拆除,以便类定义不再在内存中?

谢谢,

卡提克

【问题讨论】:

标签: apache-flex flash security


【解决方案1】:

一些答案​​:

2) 不。好吧,你可以试试,但会很麻烦。您可以查看一些引导加载文档,但如果您无法完全控制 Flash 开发,这将是一个失败的原因,最终会让您头疼。

根据您的架构,我会以通过 javascript 或 localConnection 进行通信的方式抽象出所有内容。使用 localConnection 开始(给出序列化大小限制等)可能会很痛苦,但是一旦你把所有东西都搞清楚了,你就不需要与所有的安全沙箱限制作斗争了。我知道您希望一切都安全,但是如果您可以控制服务器并知道从哪里加载 swf(并且可以添加您发明的许多安全层[例如:加载的 swf 与服务器对话)加载时]),你可能会更好。

随意的想法.... 无论如何,祝你好运。

【讨论】:

    【解决方案2】:

    Adobe 的 Alex Harui 在我在 Adob​​e 论坛上的帖子中给出了一些非常有用的答案。如果您对同样的问题感兴趣,请查看它们。

    卡提克

    【讨论】:

      猜你喜欢
      • 2011-07-15
      • 2011-09-26
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      相关资源
      最近更新 更多