読者です 読者をやめる 読者になる 読者になる

ExportJS - ActionScript3 のオブジェクトを JavaScript にエキスポート

通常 flash では、コンパイル済みのオブジェクトの変数やプロパティは外部から弄ることが出来ず*1、パラメータの微調整を行うことや、現在プロパティにどんな値が設定されているかは解りません。ので FirefoxJavaScript から AS3 のオブジェクトを JavaScript にエキスポートして簡単に弄れる ExportJS というライブラリを作ってみました。現在は Firefox の JS 専用です。*2
なにはともあれまずは Demo を。

リアルタイムに TextField を変更したり、メインのオブジェクトを弄ったり、shape のパラメータを変えています。Firefox の setter/getter を利用してるので

myObj.rotation += 1

など += や *= 演算子も利用できますし、Firebug の DOM Object ウィンドウ上で直接値を弄っても適用されます。

ExportJS.export(tf, 'myText');
ExportJS.export(greenShape, 'greenShape');
ExportJS.export(this, 'main');

のように、オブジェクトと、JS に出力したい名前を渡してやるだけで、JS から弄れるようになります。

で実際に JS に myText, greenShape, main をエキスポートしてる swf があるので、Firebug がある環境の人は弄ってみると楽しいかも知れません。
ExportJS では、public なプロパティに対する

  • メソッド呼び出し
  • String/Array/Boolean/数値型など、JS と相互変換可能なオブジェクトのプロパティへの set/get

を行うことが出来るため、ちょっとした挙動の変更なら簡単に行うことが出来ます。またオブジェクトの状態も解るので、MOUSE_DOWN されたら JS に export するようにしこんでやって、特定オブジェクトの値を追いかける事なども出来ます。ただ、AS側で値が変更されると ExportJS でエキスポートした JS のオブジェクトに通知されるわけではないので、値の反映に

myObj.reload(); // もしくは myObj.__reload();

とすると、最新の値が適用されます。

*1:FDB 使えばできますが

*2:というか Firebug が使えない環境では使う気になれないのでずっと Firefox 専用だと思います。debug 用だし。