気を取り直して、flashのActionScript (AS)と Javascript (JS)がどのようにやりとりするものなのかを調べてみた。調べたと言っても、既存のinteropコードを眺めただけだけど。基本的には以下の2つを使うことになる:
- ExternalInterface.call()で、ASから呼び出すJSの関数の名前を指定する
- ExternalInterface.addCallback()で、JSの関数の呼び出しに対応するASの関数を指定する
これらはいずれもAS側で行うことだ。(JSにはASを特別に扱う仕組みは無い)。コールバックで呼び出されるASの関数に対応するJSの関数の内容は空でよい(純粋仮想関数とかP/Invokeみたいな仕組みを連想すれば良いのではないだろうか)。
AS側は、後はflashをどういじるかの問題だ(実のところ今ここでハマっているのだけど、それはflashライブラリの使い方の問題だ)。ちなみにswfファイルを作ったことは今まで一度もないのだけど、wonderflでコードを編集するだけで自動的にswfまで作ってくれることに気付いたので、ここでビルドしている。
JS側は、いったんflashのobjectを生成してしまえば、後はcall()で指定した関数を定義して、必要に応じてaddCallback()で指定した関数を呼び出すだけだ。これはCanvasからのイベントコールバックでも、wave gadgetのイベントコールバックでもいいはずだ。といっても、どちらもこれから調べるのだけど。
Leave a comment