もうだいぶたってしまったが、flash9のパブリックアルファが出た。
flash9では、AS3.0をとりあえず扱えるとのこと。
将来的に、フラッシュのまっとうなスクリプトはAS3.0になるようなので、flash9への移行作業を始めることにする。
とりあえず
http://www.adobe.com/devnet/actionscript/articles/actionscript_tips.html
http://livedocs.macromedia.com/flex/2/langref/index.html
を参考に修正していく。
まずは、Mainから。
AS2.0では、
import classes.main.*; class Main extends MovieClip{ }
と書いていたが、
AS3.0では、
package classes.main{ import flash.display.*; public class Main extends MovieClip{ } }
※flash.display.MovieClipをインポートしておかないと、MovieClipは使えない。
※public classとクラスのスコープを定義しないと、
ReferenceError: Error #1065: 変数 Main は定義されていません。
という、意味不明のアラートが出る。
AS2.0までは、一番上のレイヤー(一番最後にロードされるから)にMainクラスを割り当てたMainムービークリップを配置して、必要最低限のロードの完了をonLoadイベントで確認して、全ての処理を開始していたが、AS3.0では、Document classという設定ができるようになっていて、swfのrootにクラス定義ができるようになったので、Mainクラスは、Document classに設定して、最低限のロードの確認はloadInfoプロパティを使う。
※Document classの設定はステージのプロパティで行う。
AS3.0からは、MovieClipクラスにonLoadイベントは無くなっており、変わりにloadInfoというプロパティを、displayObjectクラスから継承している。
使い方以下のような感じ。
package classes.main{ import flash.display.*; import flash.events.*; public class Main extends MovieClip{ public function Main(){ this.loaderInfo.addEventListener(Event.COMPLETE, myOnLoad); private function myOnLoad(eventObj:Event):void{ trace("onload"); } } } }