今回は Event クラスの主なメソッドについて解説します。最初の2つは、イベントに関連付けられたデフォルトの動作をキャンセルするためのものです。イベントの中で cancelable プロパティが true のものには以下のメソッドが有効です。
public preventDefault() : Void public isDefaultPrevented() : Boolean
イベントには、予め Flash Player が実行する動作が設定されているものがあります。例えば、テキストフィールド上で文字をタイプすると、テキストフィールドに入力した文字が表示されます。これは TextEventType.TEXT_INPUT 型のイベントのデフォルトの動作です。
ところで、このイベントは cancelable プロパティが true のためキャンセルすることができます。イベントに対して preventDefault() を呼び出すと、文字の表示を中止できます。
一方 EventType.ENTER_FRAME のようにキャンセルできないイベントの場合は、このメソッドを使用しても何も効果はありません。
isDefaultPrevented() メソッドは、既にデフォルトの動作がキャンセルされているかを調べるのに使います。戻り値が true であれば既に preventDefault() が呼ばれたことを示します。
さて、次の2つは、イベントフローによるリスナーの呼び出しを止めるためのメソッドです。
public stopPropagation() : Void public stopImmediatePropagation() : Void
どちらのメソッドを呼んでも、そのメソッドを呼び出したイベントリスナーが登録されているオブジェクトでイベントリスナーの呼び出しは終了します。イベントフロー上の残りのオブジェクトに登録されたイベントリスナーが呼び出されることはありません。
2つのメソッドの違いは、stopPropagation() メソッドは現在イベントを処理中のオブジェクトにまだ実行待ちのイベントリスナーが登録されていたらそれも実行するのに対し、stopImmediatePropagation() メソッドは自身が登録されているオブジェクトを含め以降のイベントリスナー呼び出しを行わないという点にあります。
注:なお、どちらのメソッドも、イベントに関連付けられているデフォルトの動作はキャンセルしません。これらのメソッドが有効な対象は自分で追加したリスナーに限定されます。デフォルトの動作をキャンセルするときには、この記事の最初に紹介した preventDefault() メソッドを使います。
コメントする