【问题标题】:Communication between two Flex applications两个 Flex 应用程序之间的通信
【发布时间】:2010-08-06 19:40:09
【问题描述】:

我有两个用 Flex 编写的 Web 应用程序,我想集成。我想要一个 Flex 应用程序(我们称之为应用程序 A)来调用第二个 Flex 应用程序(我们称之为应用程序 B)。应用程序 A 只能访问应用程序 B 的 swf 文件(不是源代码)。当应用程序 A 调用应用程序 B 时,它应该能够将一些数据传递给应用程序 B。在应用程序 B 被调用后,它应该能够将一些数据传递回应用程序 A。这两个应用程序将托管在同一台服务器上,但将使用不同的服务器代码。

实现这一点的最简单方法(或者更准确的方法之一)是在应用程序 A(按钮、链接、菜单项等)上使用 UI 元素来调用应用程序 B。但在这种情况下,两个 Flex 应用程序无法直接通信(因为一次只有一个处于活动状态),它们必须通过服务器代码进行通信,这是我想避免的。

简而言之,应用程序 A 应该调用应用程序 B,将一些数据传递给它。应用程序 B 应该完成它的工作,显示一些内容,并有办法将一些数据传回应用程序 A。

我知道 LocalConnection,并且我看到过类似的 question,但在这种情况下,我必须将两个应用程序都放在同一个浏览器窗口中。这在某种程度上是可以接受的,但前提是应用 B 包含在应用 A 中(如果它们都在同一个 HTML 页面上则不行)。 LocalConnection 在这种情况下会起作用吗?

您对如何实施这种沟通有什么建议吗?

【问题讨论】:

    标签: apache-flex communication


    【解决方案1】:

    您可以使用 LocalConnection 在两个基于 Web 的 SWF 之间直接通信。两个应用程序都在同一个浏览器窗口中应该没有限制。他们只是必须在同一台机器上运行。

    我不确定您所说的让一个 Flex 应用程序调用第二个应用程序的确切含义。但是,您应该能够使用 NavigateToURL 加载另一个页面。我相信它支持新窗口,这实际上是一个应用程序启动另一个。您还可以使用 iFrames 和 ExternalInterface 模拟一些东西。

    【讨论】:

      【解决方案2】:

      还有另一种方法可以做到这一点。您可以通过常规加载器加载()第二个 swf,而不是您可以这样做:

      var app:Class = mLoader.contentLoaderInfo.applicationDomain.getDefinition("mx.core::Application");
      

      ..或类似的东西(这个不工作我不知道为什么,但更多的调整会工作)。请记住,您还可以使用 describeType 在运行时查找类的更多信息。 因此,当您从那里获得应用程序时,我认为可能会有接口或事件调度程序/侦听器......这取决于您:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-27
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多