Flex 4のaddEventListener()とdispatchEvent()メソッド

3402 ワード

addEventListener()メソッド
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

言語バージョン:  ActionScript 3.0
ランタイムバージョン:  Flash Player 9, AIR 1.0
EventDispatcherオブジェクトを使用して、イベントリスナーオブジェクトを登録し、リスナーがイベント通知を受信できるようにします.イベントリスナーは、特定のタイプのイベント、フェーズ、および優先度に対して、表示リスト内のすべてのノードに登録できます.
AIR実行時のJavaScriptコードこのメソッドを使用して、AIR APIで定義されたイベントのイベントリスナーを登録します.DOM bodyオブジェクトのonloadイベントなどの他のJavaScriptイベントでは、ブラウザで実行されているコンテンツのように標準的なイベント処理テクノロジーを使用できます.
イベントリスナーの登録に成功した後、addEventListener()を追加で呼び出すことで優先度を変更することはできません.リスナーの優先度を変更するには、まずremoveListener()を呼び出す必要があります.その後、新しい優先度を使用してリスナーを再登録できます.
リスナーを登録した後、異なるtypeまたはuseCapture値を持つaddEventListener()を呼び出し続けると、個別のリスナー登録が作成されることを覚えておいてください.たとえば、useCaptureがtrueに設定されているリスナーを最初に登録すると、リスナーはキャプチャフェーズのみでリスナーになります.同じリスナーオブジェクトを使用してaddEventListener()を再度呼び出し、useCaptureをfalseに設定すると、1つはキャプチャフェーズでリスナー、もう1つはターゲットとバブルフェーズでリスナーの2つの別々のリスナーがあります.
ターゲットフェーズまたはバブルフェーズのみにイベントリスナーを登録することはできません.これらのフェーズは、ターゲットノードの始祖にのみ適用されるため、登録期間中にペアで発生する.
イベントリスナーが不要になった場合は、removeEventListener()を呼び出して削除します.そうしないと、メモリの問題が発生します.スケジューラオブジェクトが存在する限り、ゴミ回収機は、useWeakReferenceパラメータがtrueに設定されていない限り、イベントリスナーはメモリから自動的に削除されません.
EventDispatcherインスタンスをコピーする場合、追加のイベントリスナーはコピーされません.(新しく作成されたノードにイベントリスナーが必要な場合は、そのノードを作成した後にリスナーを追加する必要があります.)ただし、EventDispatcherインスタンスを移動すると、追加のイベントリスナーも移動します.
イベントを処理しているノードにイベントリスナーを登録すると、現在のフェーズではイベントリスナーはトリガーされませんが、バブルフェーズなどのイベントフローの後のフェーズでトリガーされます.
イベントを処理しているノードからイベントリスナーを削除した場合も、イベントリスナーは現在の操作によってトリガーされます.イベントリスナーを削除した後、将来の処理に備えて再登録しない限り、イベントリスナーは二度と呼び出されません.
パラメータ  type:String-イベントのタイプ. 
 
Listener:Function-イベントを処理するリスナー関数.この関数は、Eventオブジェクトを一意のパラメータとして受け入れる必要があり、次の例に示すように、結果を返すことはできません.function(evt:Event):void関数には任意の名前を付けることができます.
 
useCapture:Boolean(default=false)-このパラメータは、SWFコンテンツで使用されるActionScript 3.0表示リストアーキテクチャの表示オブジェクトに適用されます.リスナーがキャプチャフェーズで動作するか、ターゲットフェーズとバブルフェーズで動作するかを決定します.useCaptureがtrueに設定されている場合、リスナーはターゲットまたはバブルフェーズでイベントを処理するのではなく、キャプチャフェーズでのみイベントを処理します.useCaptureがfalseの場合、リスナーはターゲットまたはバブルの段階でのみイベントを処理します.すべての3つのフェーズでイベントをリスニングするには、addEventListenerを2回呼び出します.useCaptureをtrueに設定し、useCaptureをfalseに設定します. 
 
priority:int(default=0)-イベントリスナーの優先度.優先度は、シンボル付き32ビット整数で指定されます.数値が大きいほど優先度が高くなります.優先度nのすべてのリスナーは、優先度n−1のリスナーの前に処理される.2つ以上のリスナーが同じ優先度を共有している場合は、追加順に処理されます.デフォルトの優先度は0です. 
 
useWeakReference:Boolean(default=false)-リスナーへの参照が強いか弱いかを決定します.強力なリファレンス(デフォルト)を使用すると、リスナーがゴミとして回収されないようにします.弱い参照はこの役割を果たしません.
クラスレベルメンバー関数はゴミ回収の対象ではないので、クラスレベルメンバー関数に対してuseWeakReferenceをゴミ回収の影響を受けずにtrueに設定できます.ネストされた内部関数であるリスナーに対してuseWeakReferenceをtrueに設定すると、この関数はゴミとして回収され、永久関数ではありません.内部関数への参照を作成した場合(関数を別の変数に保存)、関数はゴミとして回収されず、永続的に維持されます.
ArgumentErrorの開始-指定したlistenerは関数ではありません. 
dispatchEvent()メソッド
public function dispatchEvent(event:Event):Boolean

言語バージョン:  ActionScript 3.0
ランタイムバージョン:  Flash Player 9, AIR 1.0
イベントをイベントフローに割り当てます.イベントターゲットは、dispatchEvent()メソッドを呼び出すEventDispatcherオブジェクトです.
パラメータ  event:Event-イベントフロー内のEventオブジェクトに割り当てられます.イベントを再割り当てしている場合、このイベントのクローンが自動的に作成されます.イベントが割り当てられた後、targetプロパティは変更できません.このイベントの新しいコピーを作成して、再割り当てする必要があります. 
Booleanを返します.イベントの割り当てに成功した場合、値はtrueです.値falseは、失敗またはイベントに対してpreventDefault()が呼び出されたことを示します. 
Errorの開始-イベント割り当ての再帰的な制限に達しました.