2004のMovieClipLoaderクラスを使用したとき、MovieClipLoader.onLoadInitメソッドを定義すると、コンパイルエラーを発生することがあります。スクリプトは、たとえばつぎのようなものです(スクリプト001)。my_mc);エラーの内容(図001)は、onLoadInitというプロパティ(メソッド)が(MovieClipLoader)クラスに定義されていないというものです。いう名前のプロパティはありません。2.0の「厳密な型指定」を行った場合に、この問題が発生します。my_mcl:MovieClipLoader」と、インスタンスをMovieClipLoaderで型指定していました。このとき、MovieClipLoaderインスタンスにMovieClipLoader.onLoadInitメソッドを定義すると、コンパイルエラーになります。型指定というのは、変数やプロパティに対して、そこに格納すべきインスタンスのクラスを宣言することです。すると、指定されたクラス以外のインスタンスを設定しようとしたり、そのインスタンスを参照してクラスに定義されていないプロパティやメソッドにアクセスしようとしたとき、コンパイルエラーを返します。コンパイルエラーの原因は、後述します。結論としては、MovieClipLoaderインスタンスに直接イベントハンドラメソッドMovieClip.onLoadInitを定義するシンタックスは、サポートされません。MovieClipLoader」)。ファイルひとつをロードする単純なケースには、この簡潔な記述には魅力もあります。MovieClipLoaderクラスの仕様として意図されておらず、動作が保証されないようですので、このスタイルは差控えるべきでしょう。コンパイルエラーを発生する理由は、MovieClipLoaderのクラス定義ファイルの内容にあります。2004のインストール時に作成されるユーザーのConfigurationフォルダにあるClassesフォルダ[*1]には、ActionScript定義済みクラスと同名のActionScriptファイルが格納されています。このフォルダの中に、MovieClipLoader.asも含まれています。[グローバルなクラスパスとドキュメントレベルのクラスパス]をご参照ください。MovieClipLoader.asをActionScriptエディタ(Professional版に搭載。Standard版の場合はテキストエディタやコードエディタを使用)で開くと、つぎのような内容になっています(スクリプト002)。onLoadStart(target:Object):Void;}classステートメントの先頭に、intrinsicという「ActionScript辞書」に記載のないキーワードが指定されています。クラス本体のプロパティやメソッドについては、型指定がされているのみです。メソッドについては、実際の処理内容(実装)が記述されていません。intrinsicクラスでは、型指定のみが定義されます。これは、コンパイラが型チェックを行うために用意されたものです。そこで注目されるのは、MovieClipLoaderクラスにonLoadInitのfunction定義だけが存在しないことです[*2]。これが、コンパイルエラーの原因です。intrinsicクラスMovieClipLoaderの定義に、onLoadInitメソッドの宣言と型指定がないため、コンパイル時に未定義メソッドへのアクセスが行われているものと解釈されてしまうのです。[*2]intrinsicクラス内のメソッド定義MovieClipLoaderのintrinsicクラス定義ファイルには、他のイベントハンドラメソッド(たとえば、MovieClipLoader.onLoadCompleteやMovieClipLoader.onLoadError)は定義されています。これらのイベントハンドラメソッドについても、MovieClipLoaderインスタンスに直接定義することは問題です。したがって、MovieClipLoader.onLoadInitメソッドだけがintrinsicクラス定義から漏れているのは、一種のバグというべきです。インスタンスへの直接定義を警告するためにMovieClipLoaderクラス定義から外すのであれば、他のイベントハンドラメソッドも同様に削除すべきでしょう。対処法MovieClipLoaderクラスを使うには、まずリスナーオブジェクトを作成し、MovieClipLoaderインスタンスにリスナーとして登録する必要があります。イベントの発生に対するコールバック関数は、MovieClipLoaderインスタンスでなく、リスナーオブジェクトに対して定義します。