0

我正在尝试使用 LocalConnection 在 flex 4.1 应用程序与 flash 动作脚本 2 应用程序之间进行通信。

闪存应用程序

包含一个名为 btn01 的按钮和以下代码:

var a:LocalConnection = new LocalConnection();

btn01.onPress = function() {
 trace("button clicked");
 a.send("abcde","test");
}

您可以在此处看到它向名为“abcde”的连接发送了一个测试命令。

弹性应用

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"     minHeight="600" initialize="init()">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[
        import mx.controls.Alert;

        private function init():void {
            var a:LocalConnection = new LocalConnection();
            a.client=this;
            a.connect("abcde");
        }

        public function test():void {
            Alert.show("test");
        }
]]>
</fx:Script>
<mx:SWFLoader source="/location/as2-flash-file.swf" />

如您所见,在 flex 应用程序中,我连接到名为“abcde”的 LocalConnection,并将客户端设置为“this”,这意味着可以从 LocalConnection 执行所有公共功能。

SWFLoader 元素加载 as2 闪存文件。

每当我单击按钮时,我都会看到跟踪消息,但功能测试不会在 flex 应用程序上执行。有任何想法吗?

更新

这两个应用程序位于同一个域上,实际上在本地主机上,因此不需要使用 allowDomain 并且两个应用程序都是基于 Web 的。

4

2 回答 2

1

文档说 AS2 和 AS3 LocalConnections 通信应该没有问题。

您需要查看allowDomain方法吗?您需要放置一个 crossdomain.xml 文件吗?如果您在两个不同的域上确实有 swf,请特别注意发送方法文档,因为您必须向发送方法的连接名称添加其他信息。

它们都是基于浏览器的应用程序吗?我没有,看看 AIR

于 2010-07-29T23:53:05.510 回答
1

我在 init() 范围内创建了 LocalConnection 变量,因此当函数结束时,本地连接被破坏。解决方案只是在 init 函数之外声明变量。

public var a:LocalConnection;

private function init():void {
        a = new LocalConnection();
        a.client=this;
        a.connect("abcde");
    }
于 2010-08-01T08:50:15.323 回答