2010-07-29 47 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

相關問題