最近、AS3.0およびAIRについていろいろ調査していたのだけれど、AS2.0から、AS3.0への移行が、思いのほか困難ということがわかった。下手にAS2.0の知識・経験があると、AS3.0習熟の障壁になってしまうと思う。
キャンバスや_root、イベントの処理が違うのは当たり前だが、それ以前の、ドキュメントを作ってパブリッシュするのも一苦労。
そもそも、FlexなどでSWFを作っていた人の場合は、違和感がないだろうが、FlashベースでActionScriptを書いていた僕にとって、キャンバスというかステージありきのスクリプトしか書いたことないので、ネットでサンプルとして掲載されているAS3.0のスクリプトを試したい場合、xxx.asファイル(クラス定義が入ってる)しかなく、どうやってパブリッシュしていいかすらわからなかった。
たとえば、Papervision3Dのプリミティブ・オブジェクト – Cone, Cube, Cylinder, Sphere -の、
Papervision3D のサンプルスクリプトを試そうとしたとき、Flash CS3でどうやってパブリッシュしていいかわからなかった。Flexとかだったら、簡単なのだろうか。
このあたりって、ActionScript3.0のチュートリアルを載せてるサイトにも載ってないので、しばらく悩んだ。
結果的には、
ステージの空白の領域をクリックして、ステージとタイムラインのすべてのオブジェクトを選択解除します。これによって、プロパティインスペクタの [ドキュメントプロパティ]が表示されます。
プロパティインスペクタの [ドキュメントクラス] テキストボックスにそのクラスの ActionScript ファイルのパスと名前を入力します。
注意: また、[パブリッシュ設定] ダイアログボックスにドキュメントクラスの情報を入力することもできます。
ということで、まっさらのflaファイルを生成して、ドキュメントのプロパティもしくはパブリッシュ設定中の「ドキュメントクラス」に、外部asファイルで定義しているメイン処理のクラス名を書くことで、外部asファイルのスクリプトをパブリッシュできるようになる。(ややこしい)
なので、この場合、キャンバス(***.fla)には、何もなく、フレームにもなにもない状態となる。タイムラインベースのFlashに慣れていると、非常に違和感がある。
さらに、AS3.0のドキュメントクラスに相当するクラスが、Spriteを継承(extend)している場合、キャンバスにフレームがあったり、フレームにスクリプトを書いてあったりするとコンパイルエラーになり、コンパイルすら通らない。
Spriteを継承している場合、キャンバス上にオブジェクトおよびフレームにスクリプトを書いてはいけない。これがわかるまでにだいぶ時間がかかった。
うーん。ムズカシス。
AS3.0のイベントハンドラ周りをAS2.0ライクにしてくれるライブラリがあった。(fladictさん)
あとで使ってみよう。
sketchbook – Spark project
trick7.com blog: sketchbookライブラリを使わせてもらう
Popularity: 10% [?]




