イベントリスナーと Event クラス

Event クラスの話を始める前に、少しイベントリスナーの登録について補足します。

まず、AS3 ではイベントフローに参加しているノードであればイベントリスナーを登録することができます。それから、中間ノードには、キャプチャーフェーズとバブルフェースでイベントが伝わりますが、イベントリスナー登録時にはこれらを区別する必要があります。addEventListener メソッドを呼ぶ際に、3つ目の引数 (参照記事はこちら) を true にするとキャプチャーフェーズ、false にするとバブリングフェーズ(またはターゲットフェーズ)にリスナー関数が登録されます。デフォルト値は false のため、特に指定しなければ、バブリングもしくはターゲットフェーズに登録されます。

イベントリスナー削除の際も、同様に、対象のフェーズを意識する必要があります。

Event クラス

さて、イベントリスナーとして登録される関数はイベントを引数として持つ関数でした。

function myListener(event:Event) {
  // ここにイベント処理を記述します
}

AS3 では引数が Event クラス (livedocs@lab) のオブジェクトになっています。AS2 では Object でしたね。Event のオブジェクトには、イベントの種類やターゲットなどのプロパティがあります。

public bubbles : Boolean      // バブリングイベントかどうか
public cancelable : Boolean   // イベント処理がキャンセルできるか
public currentTarget : Object // 現在イベント処理中のオブジェクト
public eventPhase : uint      // 現在のイベントのフェーズ
public target : Object        // イベントのターゲットオブジェクト
public type : String          // イベントの種類

イベントフローのサポートに伴い、target と currentTarget オブジェクトの2種類のターゲットがプロパティとして定義されました。また、イベントフローを途中で止められるかどうかを示す cancelable というプロパティもあります。このトピックは次回に説明します。

type プロパティに設定されるイベントの種類は EventType というクラス (livedocs@lab) に定義されています。が、イベントの種類によっては、イベントリスナーが受け取るのは Event のサブクラスのオブジェクトだったりします。例えば、マウスイベントの場合には MouseEvent クラス (livedocs@lab) です。ちなみに、マウスイベントの種類は MouseEventType クラス (livedocs@lab) に定義されています。これらを使って、以下のような記述ができます。

function myListener(event:MouseEvent) {
  if (event.type == MouseEventType.CLICK)
  {
    clickPoint = new Point(event.localX, event.localY);
  }
}

このように MouseEvent クラスにはマウス情報に関連したプロパティがあり、例えばクリックされた座標などを知ることが可能です。詳しくはドキュメントを参照してください。

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261