LocalConnection の使い方
外部の SWF を読み込んで操作したいとき、 LocalConnection を使います。API がちょっと分かりにくかったので、軽くまとめておきます。
呼び出し側
まず、呼び出す側の定義から。サンプルコードで示します。
// Sender.as package { import flash.net.LocalConnection; public class Sender { // Sender public function Sender() { var conn:LocalConnection = new LocalConnection(); conn.send("connectionName", "methodName", arguments); } } }
send メソッドは connectionName で指定されたコネクションに定義されている(はずの)、 methodName メソッドを呼び出します。arguments に任意の数の値を渡して、メソッドの引数にする事も可能です。
受け取り側
受け取り側にも、コネクションを設定します。送信する側とコネクションの名前を同一にしておきましょう。こちらもサンプルを示しておきます。
// Receiver.as package { import flash.net.LocalConnection; public class Receiver { // Receiver public function Receiver() { var conn:LocalConnection = new LocalConnection(); conn.client = this; conn.connect("connectionName"); } function methodName():void { trace("call me?"); } } }
ここでポイントになるのは
conn.client = this;
この一行。コールバックメソッドの呼び出し先(多くの場合 this)を指定しないと、メソッドが見つからないエラーとなってしまいます。もし外部のクラスを読み込んで操作する場合などは、そのオブジェクトを対象として指定して下さい。
ちなみに、 ActionScript2 以前では、以下のように記述するようです。
var conn:LocalConnection = new LocalConnection(); conn.connect("connectionName"); conn.methodName = function() { trace("call me?"); }
ちょっと JavaScript っぽい感じ。ActionScript3 でこう書くと、実行時にそんなプロパティねーよと怒られてしまいます。