两个Flex应用程序之间的通信

时间:2010-08-06 19:40:09

标签: flex communication

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

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

简而言之,应用程序A应该调用应用程序B,将一些数据传递给它。应用程序B应该正常工作,显示一些内容,并将一些数据传递回应用程序A.

我知道LocalConnection,我见过类似的question,但在这种情况下,我必须在同一浏览器窗口中同时拥有这两个应用程序。这在一定程度上是可以接受的,但仅当应用程序A包含在应用程序A中时(不是如果它们都在同一HTML页面上)。在这种情况下LocalConnection会工作吗?

您对如何实施此类沟通有任何建议吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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