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

Apache flex 两个Flex应用程序之间的通信,apache-flex,communication,Apache Flex,Communication,我有两个用Flex编写的web应用程序,我想集成它们。我想要一个Flex应用程序(我们称之为应用程序A)来调用第二个Flex应用程序(我们称之为应用程序B)。应用程序A只能访问应用程序B的swf文件(不是源代码)。当应用程序A调用应用程序B时,它应该能够将一些数据传递给应用程序B。在调用应用程序B后,它应该能够将一些数据传递回应用程序A。这两个应用程序将托管在同一台服务器上,但将使用不同的服务器代码 实现这一点的最简单方法(或者更准确地说是其中一种方法)是在应用程序A(按钮、链接、菜单项等)上设

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

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

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

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


您对如何实现这种通信有什么建议吗?

您可以使用本地连接在两个基于web的SWF之间直接通信。两个应用程序在同一浏览器窗口中不应有任何限制。它们必须在同一台机器上运行


我不知道你说的让一个Flex应用程序调用第二个是什么意思。但是,您应该能够使用NavigateToURL加载另一个页面。我相信它支持新的windows,这实际上是一个应用程序启动另一个应用程序。您还可以使用iframe和ExternalInterface来模拟一些东西

还有一种方法可以做到这一点。您可以通过常规加载程序加载()第二个swf,而不是执行以下操作:

var app:Class = mLoader.contentLoaderInfo.applicationDomain.getDefinition("mx.core::Application");
…或类似的东西(这一个不起作用,我不知道为什么,但更多的调整将起作用)。请记住,您还可以使用describeType在运行时查找类的更多信息。 因此,当你得到应用程序时,我认为可能会有接口或事件分派器/侦听器。。。这取决于你:)