2004-10-05 19:08:36
イベントハンドラメソッドを使う
テーマ:ActionScriptメモ
フレームが再生されるたびに行われる処理やムービークリップ上でのマウスの移動を判定する処理などは、Flash MXより前のバージョンではムービークリップに直接 onClipEvent を記述しなければなりませんでした。しかしFlash MXからはイベントハンドラメソッドというものが追加され、わざわざムービークリップに処理を書かなくても良くなりました。
例えばフレームが再生されるたびに何かの処理を行いたい場合、特定のムービークリップインスタンスに onClipEvent(EnterFrame) を記述しますが、これがイベントハンドラメソッドでは root のフレームに インスタンス名.onEnterFrame と書くことで同じ処理が可能になります。
イベントハンドラアクションとイベントハンドラメソッドの対応表はFlashの「ヘルプ」→「ActionScript辞書」→「ActionScript 言語について > ActionScript でのスクリプティングについて > ActionScript のスクリプトを実行するタイミングの制御」の項目にありますのでそちらを参照してください。
イベントハンドラメソッドを利用することでActionScriptのソースを一元化できるというメリットがあります。
ところでこのイベントハンドラメソッド。ActionScript で配置したムービークリップインスタンスに対しても使えるかというと実は使えません。
たとえば root のフレームに
addMc.onEnterFrame = function () {
trace("addMC OK");
}
というようなスクリプトを記述して、ボタンインスタンスなどで addMC というムービークリップを追加するようにした場合、ボタンをクリップしてムービークリップ addMC を追加しても出力ウインドウはうんともすんとも言いません。
つまりイベントハンドラメソッドを使うには、そのスクリプトを記述するフレームまでに対象となるムービークリップインスタンスが存在していなければならないようです。
例えばフレームが再生されるたびに何かの処理を行いたい場合、特定のムービークリップインスタンスに onClipEvent(EnterFrame) を記述しますが、これがイベントハンドラメソッドでは root のフレームに インスタンス名.onEnterFrame と書くことで同じ処理が可能になります。
イベントハンドラアクションとイベントハンドラメソッドの対応表はFlashの「ヘルプ」→「ActionScript辞書」→「ActionScript 言語について > ActionScript でのスクリプティングについて > ActionScript のスクリプトを実行するタイミングの制御」の項目にありますのでそちらを参照してください。
イベントハンドラメソッドを利用することでActionScriptのソースを一元化できるというメリットがあります。
ところでこのイベントハンドラメソッド。ActionScript で配置したムービークリップインスタンスに対しても使えるかというと実は使えません。
たとえば root のフレームに
addMc.onEnterFrame = function () {
trace("addMC OK");
}
というようなスクリプトを記述して、ボタンインスタンスなどで addMC というムービークリップを追加するようにした場合、ボタンをクリップしてムービークリップ addMC を追加しても出力ウインドウはうんともすんとも言いません。
つまりイベントハンドラメソッドを使うには、そのスクリプトを記述するフレームまでに対象となるムービークリップインスタンスが存在していなければならないようです。






