代码之家  ›  专栏  ›  技术社区  ›  Karthik

与加载的Flash SWF进行灵活的应用程序交互

  •  0
  • Karthik  · 技术社区  · 15 年前

    首先,背景:

    我正在创建一个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是否会自动断开以便类定义不再在内存中?

    谢谢,

    卡蒂克

    2 回复  |  直到 15 年前
        1
  •  0
  •   jeremym    15 年前

    一些答案:

    2)不。好吧,你可以试试,但会很混乱。您可以查看一些引导加载文档,但是如果您没有完全控制闪存开发,这是一个失败的原因,最终会让您头疼。

    根据您的体系结构,我将以这样一种方式抽象出所有内容,即通过JavaScript或本地连接进行通信。使用LocalConnection启动(提供序列化大小约束等)可能会很痛苦,但是一旦您对所有内容进行了散列,就不需要与所有安全沙盒限制作斗争。我理解您希望一切都是安全的,但是如果您拥有对服务器的控制权,并且知道从何处加载SWF(并且可以添加许多您发明的安全层[例如:在加载时让加载的SWF与服务器对话]),您可能会过得更好。

    胡思乱想…… 无论如何祝你好运。

        2
  •  0
  •   Karthik    15 年前

    来自Adobe的AlexHarui在我在Adobe论坛上的帖子中给出了一些非常有用的答案。如果你对同一个问题感兴趣,就去看看。

    卡蒂克

    推荐文章