2010-07-29 88 views
0

我试图使用LocalConnection将Flex 4.1应用程序与Flash动作脚本2应用程序进行通信。本地连接:在flex 4.1和flash之间进行通信as2

Flash应用程序

包含一个按钮叫btn01和下面的代码:

var a:LocalConnection = new LocalConnection(); 

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

,你可以在这里看到,它发送一个测试命令到名为“ABCDE”的连接。

Flex应用程序

<?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应用程序,我连接到的localConnection名为“ABCDE”和我的客户端设置为“本”,这意味着所有的公共职能可以从LocalConnection执行。

SWFLoader元素加载as2 Flash文件。

只要我点击按钮,我会看到跟踪消息,但功能测试不会在Flex应用程序上执行。有任何想法吗?

更新

两个应用程序安装在同一个域,本地主机上居然如此没有必要的allowDomain使用和这两个应用程序都是基于网络的。

回答

1

我在init()范围内创建了LocalConnection变量,所以当函数结束时,localconnection被销毁了。该解决方案仅仅是声明init函数之外的变量。

public var a:LocalConnection; 

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

我不敢相信我没有接受。做得好! – JeffryHouser 2010-08-01 20:58:37

1

Documentation说AS2和AS3 LocalConnections应该没有问题。

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

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

+0

感谢您的信息,我更新了主要帖子的更多细节。我还没有找到解决方案。 – ufk 2010-08-01 08:11:36

相关问题