システムイベントとは
ユーザーのマウス操作などの外部的な要因ではなく、フレームの更新(再生ヘッドの移動)、ムービークリップインスタンスやテキストデータの load など、Flash のシステム内部で起こるイベントをシステムイベントといいます。
システムイベントは、ムービークリップインスタンスのオブジェクトアクション、onClipEvent ( event ) ハンドラだけで取得できます。
Flashに定義されたシステムイベントは、以下のとおりです。
onClipEvent ( event ) ハンドラ (ムービークリップインスタンス)
各イベントを、もう少し詳しく見ていきましょう。
load、unload イベント
まずload イベントは、タイムライン上にインスタンスを配置したフレームで発生し、unload イベントはタイムライン上からインスタンスがなくなったフレームで発生します(下図の例では、5フレームでload イベントが、11フレ-ムで unload イベントが発生します)。
duplicateMovieClip や attachMovie メソッドを使って、ムービークリップを動的に生成した場合には、メソッドが実行されたときにload イベントが、removeMovieClip メソッドを実行して削除したときに、unload イベントが発生します。
load イベントは、ムービークリップインスタンスを最初に表示するときの透明度、位置、変数の初期値などの設定(初期設定)、ユーザーが定義するカスタム関数の定義などに使用されます。
またload イベント、unload イベントを組み合わせて、ステージ上に表示するムービークリップインスタンスの数をコントロールするなどの使用法もあります。
enterFrame イベント
Flash は、ムービープロパティ([修正]-[ムービー])のフレームレートで指定した fps の数だけ、毎秒フレームを更新します(再描画を行います)。ムービークリップインスタンスのタイムラインや、親のタイムラインでスクリプトを使って再生ヘッドを停止させても、フレームの更新は行われます。
enterFrame イベントは、このフレームの更新ごとに発生するイベントです。
enterFrame イベントは、ムービークリップインスタンスの表示位置をフレーム更新ごとをコントロールしたり、制限時間を計ったり、アクションゲームのキー操作によるキャラクタ移動(キーボードイベントは押された瞬間に1度だけ発生するイベントなので、特定キーが押されつづけているかどうかの判断には不向きです)などに使用されます。
下のサンプルムービーでは、ボールの表示位置を enterFrame イベントでコントロールしています。また、矢印キーでボールを移動できます。
load、enterFrame イベントをシンボルのフレームアクションで代用
システムイベントのうち、load イベント、enterFrame イベントは、フレームアクションを用いて、同じ処理をすることができます。
オブジェクトアクションのスクリプトは、共通部品であるシンボルには含めることができません。ステージに配置後、インスタンスごとに記述する必要があります。インスタンスごとに異なった処理をする場合には便利な機能ですが、同じ処理をする場合には、スクリプト部分も共通部品となるフレームアクションの方が適しています。
目的に応じて、イベントハンドラとフレームアクションを使い分けるようにしましょう。
また、attachMovie メソッドを使って、スクリプトでムービークリップインスタンスを生成する場合には、オブジェクトアクションは記述できませんので、フレームアクションを使用する必要があります。
load イベントは、ムービークリップシンボルの1フレーム目に、ハンドラの処理内容を記述することで、代用可能です。
enterFrame イベントは、ムービークリップシンボルの複数のフレームにハンドラの処理内容を記述し、それらのフレームを繰り返し再生(ループ再生)することで、代用可能です。
・関連項目