意外と使えないMovieClip.onData [Edit]

Flash MX 2004オンラインヘルプによれば、「ムービークリップがMovieClip.loadVariables()またはMovieClip.loadMovie()の呼び出しからデータを受け取ったときに呼び出されます」。しかし、これは嘘です。MovieClip.loadMovie()メソッドを使った場合、MovieClip.onDataハンドラは呼出す方法がありません。

MoiveClip.loadMovie()メソッドのターゲットにMovieClip.onDataイベントハンドラメソッドを定義した場合、外部ファイルをロードするとユーザーの設定したプロパティ(変数)とともにこのイベントのコールバック関数もクリアされます(「MovieClip.loadMovieで外部ファイルを読込む」参照)。つまり、イベントが発生しても、それを受取るイベントハンドラはもはや存在していないことになります。

MovieClip.onLoadイベントハンドラメソッドも、同じ理由でMovieClip.loadMovie()メソッドとともに使うことはできません。しかし、MovieClip.onLoadは、MovieClipに設定するカスタムクラスに定義することで、インスタンスの生成直後のイベントを受取るという使い途が考えられます。

しかし、MovieClip.onDataハンドラは、そのMovieClipインスタンスをターゲットに外部ファイルをロードする以外に呼出しようがありません。したがって、MovieClip.loadVariables()メソッド(またはloadVariables()関数)との使用に限定されることになります。

けれども、Flash Player 6以降であれば、外部テキストファイルのロードにはLoadVarsクラスを使った方が便利です。ですから、Flash Player 6以降対応のMovieClip.onDataイベントハンドラメソッドは、実際上出る幕がないということになります。
_____
[*1] Colin Moock『Actionscript for Flash MX: The Definitive Guide』p.676〜(『ActionScript第2版(VOLUME 2)完全リファレンス』p.281〜)には、MovieClip.onDataイベントがMovieClip.loadMovie()メソッドとの組合わせで使えるかのような記述もあります。しかし、イベントハンドラとしては、結局onClipEvent (data)アクションを使用しなければならないとされています。

馬場ぎんがさんの『ActionScript ポケットリファレンス[Flash MX 2004/MX/5対応]』には、「loadMovieでは既存のイベントハンドラメソッドがクリアされるため、MovieClip.onData()イベントハンドラメソッドを使用することはできません」と、明確に記述されています。

その他の記事