ブクマとかスターが付いてから説明を書くことがよくあります。
説明が必要な場合は『解説キボンヌ』とコメントすると自動的に解説が付き ません。
ググルと何件か出てきますが、逆の方法としてこういうやり方もあります。
接続名を引数で渡したりしなくて良いし、送信側の数を制御できるのも面白く使えるんじゃないかなーと思います。
受信側
private var connection:LocalConnection = new LocalConnection(); private var realName:String = "_this_is_random_" + String(new Date().time); // ランダム名 // コンストラクタ function LCReceiver() { // 最初から実際に使用するコネクションを張っておく this.connection.connect(realName); // なまはげ起動「つなぎたがってるコはいねがー!」 var timer:Timer = new Timer(100); timer.addEventListener(TimerEvent.TIMER, this.acceptConnection); timer.start(); } function acceptConnection(event:TimerEvent):void { try { // 送信側に本当のコネクションの名前(ランダム名)を渡す // _MyAppSetupConnectionNameはアプリケーション固有の固定名 this.connection.send("_MyAppSetupConnectionName", "onConnectionName", realName); // 送信側の数をこの辺で制御できる(と思うんだけど試してない) } catch (e:Error) { } }
送信側
private var setupConnection:LocalConnection = new LocalConnection(); public function onInit():void { // ホントの名前を待ち受ける this.setupConnection.client = this; this.setupConnection.connect("_MyAppSetupConnectionName"); } public function onConnectionName(realName:String):void { // キタ━━(゚∀゚)━━ヨ this.setupConnection.close(); // 用済み var connection:LocalConnection = new LocalConnection(); connection.send(realName, "foo"); }
まあこの例だと、100ms以内に送信側が複数発生するとonInitでconnectできないんですが、その辺はTimerとか使って適当に処理してくだしい。