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" />

ご覧のとおり、フレックス アプリケーションでは、「abcde」という名前の LocalConnection に接続し、クライアントを「this」に設定します。これは、すべてのパブリック関数を LocalConnection から実行できることを意味します。

SWFLoader 要素は、as2 フラッシュ ファイルをロードします。

ボタンをクリックするたびにトレース メッセージが表示されますが、フレックス アプリケーションで関数テストが実行されません。何か案は?

アップデート

両方のアプリケーションは、実際には localhost の同じドメインにあるため、allowDomain を使用する必要はなく、両方のアプリケーションは Web ベースです。

4

2 に答える 2

1

ドキュメントによると、AS2およびAS3Loc​​alConnectionsは問題なく通信する必要があります。

allowDomainメソッドを調べる必要がありますか?crossdomain.xmlファイルを配置する必要がありますか?2つの異なるドメインにswfsがある場合は、sendメソッドの接続名に追加情報を追加する必要があるため、sendメソッドのドキュメントに特に注意してください。

どちらもブラウザベースのアプリケーションですか?私は違います、AIRを調べてください

于 2010-07-29T23:53:05.510 に答える
1

init() スコープ内に LocalConnection 変数を作成したため、関数が終了すると 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 に答える