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" />
ご覧のとおり、フレックス アプリケーションでは、「abcde」という名前の LocalConnection に接続し、クライアントを「this」に設定します。これは、すべてのパブリック関数を LocalConnection から実行できることを意味します。
SWFLoader 要素は、as2 フラッシュ ファイルをロードします。
ボタンをクリックするたびにトレース メッセージが表示されますが、フレックス アプリケーションで関数テストが実行されません。何か案は?
アップデート
両方のアプリケーションは、実際には localhost の同じドメインにあるため、allowDomain を使用する必要はなく、両方のアプリケーションは Web ベースです。