イベントフローを考える
金井、イベントを知る
ここではまず用語の整理をします、その前に、MX 2004 のスクリプトレベルのイベントに関する仕様は基本的に W3C (World Wide Web Consortium ) の DOM (Document Object Model) Level3 勧告に準拠していることを知っておこう。
MX 2004 はこの DOM Level3 勧告に沿って、イベントに関する仕様を次のように定めています。具体的には mx.events.EventDispatcher クラスに反映されている内容になります
1. イベントの発行元、これを target と呼ぶ
2. イベント名、これは文字列による、 type と呼ぶ
3. イベントの通知を望むオブジェクト、イベントリスナー。function オブジェクトも可能(下記参照)
4. リスナーをイベントに登録するには、addEventpstener という名のメソッドを用い、次のよな形で行う
targetObject.addEventListener(eventType, listener); // 引数 eventType はイベント名を表す文字列 // 引数 listener はリスナーオブジェクトの参照
5. なお、function オブジェクトを引数 listener として渡すことも可能
removeEventListener(eventType, listener); // 引数 eventType はイベント名を表す文字列 // 引数 listener はリスナーオブジェクトの参照
6. target は、イベントの発行を、dispatchEvent というメソッドで行い、以下の形をとる
dispatchEvent({ type: eventType. target: targetObject}); // 引数 eventType は任意のイベント名 // 引数 eventObject は、 target から dispatchEvent を通じて自動的に渡される引数で、 // type プロパティと target プロパティなどを保持する object 。 function 定義内で // 必要があれば eventObject . type や eventObject . target といった形で type や target の取得に用いる。 // function 定義内では 、 ' this ' キーワードがリスナー自信を目指す。
MX 2004 付属の各種 UI コンポーネントは、既にこのEventDispatcher を実装済みで、それらのコンポーネントを使う分には、dispatchEvent を意識する必要はありません。必要なのはリスナーを addEventListener で登録することと、リスナーにイベント名を名前とするイベントハンドラメソッドを定義することだけです。