Flex应用程序与加载的Flash SWF交互

时间:2009-12-14 07:19:41

标签: flex flash security

首先,背景:

我正在创建一个Flex应用程序,其中的组件一次显示各种动态加载的SWF(有点像自助服务终端)。这些加载的SWF是在Flash IDE中创建的,而不是Flex。它们不会由我们创建(我们将提供.fla模板,但就是这样),所以我将它们加载到一个单独的SecurityDomain中。

我的问题:

  1. 我希望应用程序能够在加载的SWF中调用方法。为此,我是否会在加载的SWF的启动过程中调用Security.allowDomain(“域原始应用程序已从中加载”)?

  2. 我希望加载的SWF能够抛出应用程序捕获的事件。我可以通过SWFLoader.swfBridge属性来完成此任务吗?

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

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

  5. 谢谢,

    KARTHIK

2 个答案:

答案 0 :(得分:0)

一些答案​​:

2)不,嗯,你可以试试,但这会很乱。您可以查看一些引导程序加载文档,但如果您无法完全控制Flash开发,则这是一个失败的原因,并且最终会让您头疼。

根据您的体系结构,我会以通过javascript或localConnection进行通信的方式抽象出所有内容。使用localConnection启动(给出序列化大小限制等)可能是一件痛苦的事情,但是一旦你把所有东西都搞清楚了,你就不需要与所有安全沙箱限制作斗争了。我知道你希望一切都是安全的,但是如果你能控制服务器并知道swfs的加载位置(并且可以添加你发明的多层安全性[例如:将swf加载到服务器上)加载时),你可能会更好。

随机的想法...... 祝你好运。

答案 1 :(得分:0)

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

KARTHIK