最終更新日:
03/01/05
イベントドリブンとは
Flashには、フレームアクション、ボタンのオブジェクトアクション(ボタンアクション)、ムービークリップのオブジェクトアクション(クリップアクション)の3つのアクションがあります。
このうち、ボタンとムービークリップのオブジェクトアクションは、ユーザーイベントやシステムイベントに対応したイベントハンドラを記述するところでしたね。
ここで、もう一歩踏み込んで考えてみましょう。
クリップアクションの enterFrame イベントハンドラとフレームアクションのちがいはなんでしょうか? enterFrame は新しいフレームに入ったときに発生するイベントです。フレームアクションも記述されたフレームに入ったときに実行されるアクションですね。どうですか? 気づきましたか?
そうです。フレームアクションは、onClipEvent ステートメントは付いていませんが enterFrame イベントハンドラの一種です。
enterFrame イベントハンドラは、ムービークリップの全フレームを対象とするときはクリップアクションに、個別のフレームを対象とするときはフレームアクションに記述するのです(ただし、2つのアクションには、動作上の違いが存在します。ムービークリップにstop()アクションを実行した場合、フレームアクションは1度のみ実行されるのに対し、enterFrame
イベントハンドラは設定されたfpsに対応した間隔で常に実行されます。この違いには、十分注意しましょう)。
 |
|
フレームアクションは個別のフレームに記述された enterFrame イベントハンドラ
|
となると、Flashの3つのアクションは、すべてイベントハンドラということがいえますね。そのとおりです。ActionScript では常にイベントに対応した処理を記述するのです。
このように、イベント単位で処理を記述し、実行するプログラムをイベントドリブン(イベント駆動)といいます。Windows
や Macintosh など、GUIを採用したOS上で動くほとんどのアプリケーションがこのイベントドリブン型です。
イベントドリブンでのアクションの記述
イベントドリブン型プログラムでは、すべての処理がイベントをトリガ(引き金、きっかけ)として実行されます。したがって、目的とする動作を実現するために、どのイベントをトリガとするかを考えなければいけません。
Flashのイベントは、以下のとおりです。それぞれのイベントの意味を理解すれば、どのイベントをトリガとするかはそれほどむずかしくありませんね。
|
ユーザーイベント
|
システムイベント
|
|
press
release
releaseOutside
rollOver
rollOut
dragOver
dragOut
mouseMove
mouseDown
mouseUp
keyDown
keyUp
keyPress "Key"
|
load
unload
enterFrame
data
|
ただし、ひとつだけ注意が必要です。それは画面の再描画に関しての問題です。Flashでは、フレーム更新時に画面の再描画が行われ、それ以外は行われません。したがって、enterFrameイベントおよびフレームアクション以外に記述された画面の再描画を要するスクリプトは、スクリプト実行時には画面に反映されず、フレーム更新時にはじめて反映されます。
まちがいやすい点ですので、十分な注意が必要です。くわしくは、「画面の再描画について」を参照してください。
・関連項目
イベントとイベントハンドラ
画面の再描画について
|