ユーザーイベントとは
マウス操作やキーボード入力など、ユーザーが引き起こすイベントをユーザーイベントといいます。
Version4 では、ボタンインスタンスでユーザーイベントを取得していましたが、Version5 からはムービークリップインスタンスでも取得できるようになりました。
どちらのインスタンスも、フレームアクションではなく、オブジェクトアクションにイベントハンドラを記述することにより、イベントを取得します。詳しくは、「イベントとイベントハンドラ」をご覧ください。
マウスイベント
ユーザーのマウス操作で発生するイベントをマウスイベントといいます。
Flashでは、on ( event ) ハンドラに記述可能なマウスイベントが7つ、onClipEvent ( event ) ハンドラに記述可能なマウスイベントが3つ定義されています。
まずは、on ( event ) ハンドラのマウスイベントから見ていきましょう。
on ( event ) ハンドラ (ボタンインスタンス)
ご覧のとおり、on ( event ) ハンドラのマウスイベントは、ハンドラが記述されたボタンインスタンスの領域とマウスカーソルの位置関係が重要となります。マウスカーソルの現在位置がボタンインスタンスの領域内か領域外か、その条件にマウスボタンが押された、離されたという行為を組み合わせてイベントが定義されています。
なお、マウスイベントは定義された条件がそろったときに一度だけ発生します。たとえば、press イベントはボタンが押された際に一度だけ発生します。ボタンが押されている間、連続して発生するわけではありません。
ここでいうボタンインスタンスの領域とは、ボタンシンボルの「ヒット」フレームに配置された図形の線、および塗りつぶされた面のことを指します。閉じた図形でも、内部が塗りつぶされていない場合は、線の部分のみが領域とされ、内部は領域外となりますので注意が必要です。ボタンインスタンスの領域は、ムービー再生時に、マウスカーソルが領域内に入ると指カーソルに変わるので、比較的容易に確認できます。
それでは、各イベントの発生を、解説ムービーで確認してみましょう。
なお、press イベント発生後、マウスボタンが押されている間は、カーソルがインスタンス領域外に出ても(dragOut)、ボタンインスタンスは「オーバー」フレームを表示します。この間は、他のボタンインスタンスのイベントは発生しません。
この点も含め、下のムービーで、各イベントの発生を確認してみましょう。
次に、onClipEvent ( event ) ハンドラのマウスイベントを見てみましょう。
onClipEvent ( event ) ハンドラ (ムービークリップインスタンス)
ご覧のように、onClipEvent ( event ) ハンドラのマウスイベントは、on ( event ) ハンドラとは異なり、インスタンス領域とはまったく関係ありません。ステージ上のどこかで、マウスカーソルが動く、またはマウスボタンが押される、離されると、発生します。
したがって、複数のムービークリップインスタンスが配置されたムービーでは、ひとつのイベントの発生で、すべてのムービークリップインスタンスのイベントハンドラが実行されます。
on ( event ) ハンドラのように、どのインスタンス上でイベントが発生したのかを知るためには、MovieClip.hitTest メソッドでカーソル位置を確認する必要があります。
それでは、各イベントの発生を、下のムービーで確認してみましょう(右端はボタンインスタンスです)。
キーボードイベント
ユーザーのキーボード入力で発生するイベントをキーボードイベントといいます。
Flashのヘルプおよびマニュアルでは、マウスイベントとして記述されていますが、ここでは、別のイベントとして扱います。
Flashで、定義されたキーボードイベントは以下のとおりです。
on ( event ) ハンドラ (ボタンインスタンス)
スペースキーを押したときに、2つのボタンのうち、左のインスタンスのみが、ハンドラを実行したことに気づきましたか?
ボタンインスタンスの場合は、1つのキーは、1つのインスタンスでのみイベントを取得することができます。複数のインスタンスで、同じキーのイベントを取得することはできません。このような指定がされた場合は、重なり順が一番下のインスタンスが、イベントを取得します。
実際に、キー入力を取得し、ムービーで活用するには、いろいろな注意点があります。これらについては、別のページでまとめる予定です。
・関連項目