イベントモデルとコールバック

イベントモデルの代わりに単純なコールバックを使用することを検討してください。

ActionScript 3.0 イベントモデルは、オブジェクト送出の概念に基づいています。イベントモデルはオブジェクト指向であり、コードの再利用に対して最適化されています。dispatchEvent() メソッドはリスナーのリストをループ処理し、登録された各オブジェクトでイベントハンドラーメソッドを呼び出します。ただし、イベントモデルの欠点の 1 つとして、アプリケーションの有効期間にわたって多くのオブジェクトを作成する可能性が高いことが挙げられます。

アニメーションシーケンスの終了を示すために、タイムラインからイベントを送出する必要があることを考えてみてください。通知を完了するには、次のコードに示すように、タイムラインの特定のフレームからイベントを送出することができます。

dispatchEvent( new Event ( Event.COMPLETE ) );

Document クラスは、次のコードを使用してこのイベントを監視できます。

addEventListener( Event.COMPLETE, onAnimationComplete );

この手法は正しいのですが、ネイティブイベントモデルの使用は低速となり、従来のコールバック関数を使用するよりも多くのメモリを消費する可能性があります。イベントオブジェクトを作成してメモリ内に割り当てる必要がありますが、これによりパフォーマンスが低下します。例えば、Event.ENTER_FRAME イベントを監視する場合、新しいイベントオブジェクトが、イベントハンドラーの各フレームで作成されます。キャプチャフェーズおよびバブリングフェーズが原因で、表示オブジェクトに対するパフォーマンスが特に低速になる可能性があります。表示リストが複雑である場合、これには特に費用が掛かります。