ActionScript 3.0を初めてお使いになる場合や、ActionScript 2.0イベントに慣れている場合は、新しいイベントシステムの動作に慣れるのに時間がかかるかもしれません。しかし次第に慣れて、使用できるコントロールの水準の高さに満足していただけると思います。ここでは、ActionScript 3.0でイベントを操作する際のヒントや注意事項について補足します。
eventPhaseプロパティを確認すると、役に立つフィードバックが得られ、不要なイベントの伝達を防ぐことができます。eventPhaseがEventPhase.AT_TARGETである場合は、イベントのターゲットを判断できます。MouseEvent.ROLL_OVERおよびMouseEvent.ROLL_OUTと、MouseEvent.MOUSE_OVERおよびMouseEvent.MOUSE_OUTという2種類のイベントタイプがあります。これらの相違点は、ロールイベントはバブルしないことです。つまり、オブジェクトの子から伝達されるmouse overイベントとmouse outイベントを混同することがなくなります。他のイベントの場合は、mouseChildrenプロパティを使用して、マウスイベントに関する伝達の競合を避けることができます。mouseEnabledプロパティをfalseに設定します。stageプロパティは、アクティブな表示リスト内、または、stageに添付されていて、画面に表示されている表示リスト内にあるときに、表示オブジェクトからのみアクセスできます。表示オブジェクトがこのような表示リストに含まれていない場合、そのstageプロパティはNullです。同じ動作がrootプロパティにも適用されます。Event.ADDEDおよびEvent.REMOVED)は、マウスイベントと同じようにバブルしますが、キャプチャとバブリングは親のみに伝達され、子には伝達されないことを覚えておいてください。インスタンスの子は親のイベントを受け取りません。つまり、コンテナの子にとって、そのコンテナ(またはその親のいずれか)がアクティブな表示リストに追加されており、DisplayObjectのstageおよびrootプロパティにこれらの子が付与されているかどうかを簡単に判断できる方法はありません。この問題のソリューションとして、Flash Playerバージョン9,0,28,0(2006年11月14日リリース)に追加されたEvent.ADDED_TO_STAGEイベントとEvent.REMOVED_FROM_STAGEイベントの使用があります。これらのイベントは、表示オブジェクトがアクティブな表示リストに対して追加されたり削除されたりすると、それを表示オブジェクトに伝えるので、stageおよびrootにアクセスできるかどうかがわかります。MouseEvent.MOUSE_MOVE)は、イベントを受け取っているオブジェクトの上にマウスが位置しているときにのみ呼び出されます。このイベントを使用して画面上のオブジェクトを移動したりドラッグしたりする場合、マウスを誤ってオブジェクトの外に動かすと、イベントが失われます。確実にmouse moveイベントを維持するには、リスナーをstageに追加してください。addEventListenerの4番目のパラメータを使用して、リスナーの優先順位を設定します。この方法はstopImmediatePropagation()を利用している場合に役立ちます。最も高い優先順位を持つリスナーが常に最初に呼び出されます。新しい開発方法を理解するには、このチュートリアルに含まれている例のように、小さなテストファイルを作成すると便利です。機能を分離し、様々な値をパラメータに渡してみて、ActionScript 3.0でイベントが制御され、キャプチャされる様子を理解してください。オブジェクトを重ねて配置するなど、様々なシナリオを試して、新しいイベント処理方法がActionScript 2.0とはどのように異なるかを確認してください。結果を出力パネルでトレースすると、受け取られたイベントに関するフィードバックを直ちに確認できます。
新しいEventDispatcherの動作に慣れたら、Eventクラスを拡張し、独自のカスタムクラスを外部のActionScriptファイルに定義して作成できます。カスタムサブクラスを作成し、一意のプロパティを持つ独自のカスタムイベントの送り出しを試してください。独自のEventクラスを作成すると、デフォルトのパラメータを使用して、Flash Playerで現在処理されていないカスタムイベントの新しいハンドラを用意できます。この手段は、画面に対するオブジェクトの位置を特定し、上級ユーザインタラクティビティを実現する上で非常に役立ちます。ActionScript 3.0の新しいイベント処理機能の使用方法を習得すると、数多くの新しい開発の可能性を見い出し、入力情報の追跡をより詳細に制御することができるでしょう。
このチュートリアルの冒頭で提供されているサンプルファイルをぜひダウンロードして、ここで説明している概念を確認してみてください。また、『ActionScript 3.0 リファレンスガイド』で説明されているイベント関連クラスとイベント処理情報について理解しておくことをお勧めします。