今日は、Flash OOP の会がありました(というかまだやってます)。Flash を日々使用している人に興味があるようなのは、やはり AS3 によって今の制作ワークフローがどう変わるかということのようですので、AS1/2 と AS3 の関係について、ちょっと書いておきたいと思います。
現在 AS3 のアプリケーションを作れるのは Flex Builder 2 のみです。また、Flash 8 では AS3 のクラスを使用することができません。従って、現時点で可能な組み合わせは、Flash 8 で作成した AS1/2 SWF を AS3 アプリケーションに組み込む場合のみということになります。
さて、AS3 アプリに AS1/2 swf を組み込むには以下の2つの方法があります。
- AS3 のクラス定義内にコンパイル時に AS1/2 swf を埋め込む宣言を記述する
- 実行時に AS3 の Loader コンポーネントを使って AS1/2 swf を読み込む
1の埋め込みの場合は以下のように記述します。この方法では、AS1/2 で記述されたスクリプトは全て削除されるようです(少なくとも現時点)。
// MyTest.as の中 package{ import flash.display.MovieClip; [Embed(source="mytest.swf")] public class MyTest extends MovieClip {} }
どこまでサポートされるかは未確認ですが、上記のように AS1/2 の swf を埋め込んで、MyTest のインスタンスを addChild() すると play() や stop() 程度は使えるようです。
2の Loader を使用する方法では AS1/2 のコードも実行されます。ただし、AS3 の swf と AS1/2 の swf 間ではクロススクリプティングができません。相互のやり取りはローカルコネクションを通してのみになります(これも現時点)。
本日の講演、とても楽しく拝聴しました。
これからのFlash開発がどうなっているのか気になっているので、ActionScriptの今後について聴くことができて本当によかったです。
未確定なことも多いのに、丁寧に説明していただきありがとうございます。これからもブログがんばってください。
木本さん
こちらこそお越しいただいてありがとうございました。
コメントもありがとうございます。励みになります。