イベント処理

wrote2009.07.31

イベント処理

イベント処理の基本書式は下記

オブジェクト.addEventListener(イベント,イベントハンドラ関数名);
function イベントハンドラ関数名(変数){
処理
}

たとえば、btnという名のオブジェクトをクリックした際に、「テスト」というアラートを表示させる場合、下記のように記述します。

btn.addEventListener("click",sample1);
function sample1(evt){
trace("テスト");
}

また、定数を指定することで同様の処理をすることができます。
定数を使うメリットはエラー箇所の特定が容易になることだそうです。

btn.addEventListener(MouseEvent.CLICK,sample1);
function sample1(evt){
trace("テスト");
}

イベント処理の削除

イベント処理の削除の基本書式は下記

オブジェクト.removeEventListener(イベント,イベントハンドラ関数名);
function イベントハンドラ関数名(変数){
処理
}

たとえば、btn2という名のオブジェクトがクリックされた際、上記でbtnがクリックされた場合の処理を削除する場合

btn2.addEventListener(MouseEvent.CLICK,sample2);
function sample2(evt){
btn.removeEventListener(MouseEvent.CLICK,sample1);
}

イベントの種類

  • ユーザーイベント
    • マウスイベント
    • キーボードイベント
  • システムイベント

マウスイベントの種類

イベント(文字列) 定数 説明
click MouseEvent.CLICK オブジェクト内でマウスボタンを押して押して離す
doubleClick MouseEvent.DOUBLE_CLICK オブジェクト内でマウスボタンを連続で2回押して離す
mouseDown MouseEvent.MOUSE_DOWN オブジェクト内でマウスボタンを押す
mouseUp MouseEvent.MOUSE_UP オブジェクト内でマウスボタンを離す
mouseMove MouseEvent.MOUSE_MOVE オブジェクト内でマウスカーソルを動かす
rollOver MouseEvent.ROLL_OVER オブジェクト内にマウスカーソルが入る
rollOut MouseEvent.ROLL_OUT オブジェクト内からマウスカーソルが出る
mouseOver MouseEvent.MOUSE_OVER (rollOverを繊細にしたイメージ)
mouseOut MouseEvent.MOUSE_OUT (rollOutを繊細にしたイメージ)
注意
doubleClickイベントはデフォルトでは無効になっているので、使う際にはdoubleClickを有効にするスクリプトを記述します。
オブジェクト名.doubleClickEnabled = true;

キーボードイベントの種類

イベント(文字列) 定数 説明
keyDown KeyboardEvent.KEY_DOWN キーボードのキーを押す
keyUp KeyboardEvent.KEY_UP キーボードのキーを離す

システムイベントの種類

イベント(文字列) 定数 説明
addedToStage Event.ADDED_TO_STAGE オブジェクトがステージに表示される
enterFrame Event.ENTER_FRAME フレームレートに合わせて継続的に発生
removedFromStage Event.REMOVED_FROM_STAGE オブジェクトがステージから削除される

押されたキーの特定

プロパティ 説明
keyCode キーを特定するためのキーコード値
charCode 文字を特定するための文字コード値
altKey altキーが押されているか(押されていればtrue、押されていなかったらfalse) ※Windows環境のみサポート
ctrlKey ctrlキーが押されているか(押されていればtrue、押されていなかったらfalse)
shiftKey shiftキーが押されているか(押されていればtrue、押されていなかったらfalse)
keyLocation 同じキーが複数ある場合にどのキーが押されたかを数値で表す
注意
キー操作行うコンテンツのムーb−プレビューで確認する際は、確認前に【制御】→【キーボードのショートカットを無効】にチェックを入れます。
これは、プレビューウィンドウのショートカットとして認識されてしまい、正しく確認できないことを防ぐためです。
文字コードを文字に変換
文字 = String.fromCharCode(文字コード)

システムイベント、enterFrameイベントとremovedFromStageイベント

enterFrameはそのactionが実行される限り、イベント処理を設定したオブジェクトがなくなってもイベントハンドラが実行され続けます。
オブジェクトがステージから消えたらremovedFromStageイベントでイベント処理を削除するようにすると作業の混乱を回避できます。

オブジェクト名.addListener(Event.ENTER_FRAME,sample1);
オブジェクト名.addListener(Event.REMOVED_FROM_STAGE,sample2);
function sample1(evt){
//処理
}
function sample2(evt){
オブジェクト名.removeEventListener(Event.ENTER_FRAME,sample1);
}