| パッケージ | flash.events |
| public class EventDispatcher | |
| 継承 | EventDispatcher Object |
| 実装 | IEventDispatcher |
| Subclasses | AbstractInvoker, AsyncToken, AxisBase, Camera, Channel, ChannelSet, ChartItem, ContextMenu, ContextMenuItem, CSSStyleDeclaration, DataStore, DataTransform, DisplayObject, Effect, EffectInstance, EffectManager, FileReference, FileReferenceList, IME, LayoutManager, LoaderInfo, LocalConnection, LogLogger, MessageAgent, Microphone, NetConnection, NetStream, PrintJob, RadioButtonGroup, SetEventHandler, SharedObject, Socket, Sort, SortField, Sound, SoundChannel, State, StyleSheet, Timer, ToolTipManager, Tween, URLLoader, URLStream, Validator, XMLSocket |
イベントターゲットは、Flash® Player イベントモデルの重要な部分です。イベントターゲットは、イベントが表示リスト階層をどのように流れるかに関して中心的な役割を果たします。マウスのクリックやキー押下などのイベントが発生すると、Flash Player によって、イベントオブジェクトが表示リストのルートからイベントフローに送出されます。イベントオブジェクトは、表示リストを移動してイベントターゲットに到達すると、そこから引き返して表示リストを往復します。このイベントターゲットへの往復は、概念として 3 つの段階に分けられます。キャプチャ段階は、ルートからイベントターゲットのノードの直前のノードまでが対象となります。ターゲット段階は、イベントのターゲットノードのみが対象となります。バブリング段階は、表示リストのルートまでの帰り道を構成するすべての後続ノードが対象となります。
一般に、ユーザー定義クラスがイベント送出機能を得る最も簡単な方法は、EventDispatcher を拡張することです。クラスが既に別のクラスを拡張していて拡張が不可能な場合、代わりに IEventDispatcher インターフェイスを実装し、EventDispatcher メンバーを作成して、集約された EventDispatcher に呼び出しをルーティングする単純なフックを記述できます。
| メソッド | 定義 | ||
|---|---|---|---|
| EventDispatcher(target:IEventDispatcher = null)
EventDispatcher クラスのインスタンスを集約します。
| EventDispatcher | ||
| addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
| EventDispatcher | ||
| dispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
| EventDispatcher | ||
| hasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | ||
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
| removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | ||
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() | toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
| willTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | ||
| EventDispatcher | () | コンストラクタ |
public 関数 EventDispatcher(target:IEventDispatcher = null)EventDispatcher クラスのインスタンスを集約します。
EventDispatcher クラスは、一般に基本クラスとして使用されます。このため、ほとんどの開発者はこのコンストラクタ関数を使用する必要がありません。ただし、IEventDispatcher インターフェイスを実装する上級開発者は、このコンストラクタを使用する必要があります。EventDispatcher クラスを拡張できないため、代わりに IEventDispatcher インターフェイスを実装する必要がある場合は、このコンストラクタを使用して、EventDispatcher クラスのインスタンスを集約します。
パラメータtarget:IEventDispatcher (default = null) — EventDispatcher オブジェクトに送出されるイベントのターゲットオブジェクトです。このパラメータが使用されるのは、EventDispatcher インスタンスが、IEventDispatcher を実装するクラスごとに集約される場合です。これは、含んでいるオブジェクトをイベントのターゲットにするために必要です。クラスが単純に EventDispatcher を継承する場合は、このパラメータを使用しないでください。
|
| addEventListener | () | メソッド |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):voidイベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。
イベントリスナーが正常に登録された後に、addEventListener() をさらに呼び出して優先度を変更することはできません。リスナーの優先度を変更するには、最初に removeListener() を呼び出す必要があります。その後、同じリスナーを新しい優先度レベルで再度登録できます。
リスナーが登録された後に、type または useCapture に別の値を設定して再度 addEventListener() を呼び出すと、別のリスナー登録が作成されることに注意してください。たとえば、最初にリスナーを登録するときに useCapture を true に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。useCapture に false を設定し、同じリスナーオブジェクトを使用して再度 addEventListener() を呼び出すと、異なる 2 つのリスナーが登録されます。1 つはキャプチャ段階でリスニングするリスナーで、もう 1 つはターゲット段階とバブリング段階でリスニングするリスナーです。
ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。
イベントリスナーが不要になった場合は、removeEventListener() を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。ガベージコレクターは参照を有するオブジェクトを削除しないため、登録されているイベントリスナーに関係したオブジェクトはメモリから自動的に除去されません。
EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。
イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガされません。ただし、バブリング段階など、イベントフローの後の段階でトリガすることができます。
イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。
パラメータtype:String — イベントの型です。
|
|
listener:Function — イベントを処理するリスナー関数です。この関数は、次の例のように、Event オブジェクトを唯一のパラメータとして受け取り、何も返さないものである必要があります。
関数は任意の名前を持つことができます。 |
|
useCapture:Boolean (default = false) — リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階で動作するかどうかを判断します。useCapture を true に設定すると、リスナーはキャプチャ段階のみでイベントを処理し、ターゲット段階またはバブリング段階では処理しません。useCapture を false に設定すると、リスナーはターゲット段階またはバブリング段階のみでイベントを処理します。3 つの段階すべてでイベントを受け取るには、addEventListener を 2 回呼び出します。useCapture を true に設定して 1 度呼び出し、useCapture を false に設定してもう一度呼び出します。
|
|
priority:int (default = 0) — イベントリスナーの優先度レベルです。優先度は、符号付き 32 ビット整数で指定します。数値が大きくなるほど優先度が高くなります。優先度が n のすべてのリスナーは、優先度が n-1 のリスナーよりも先に処理されます。複数のリスナーに同じ優先度が設定されている場合は、追加された順番で処理されます。デフォルトの優先度は 0 です。
|
|
useWeakReference:Boolean (default = false) — リスナーへの参照が強参照と弱参照のいずれであるかを判断します。デフォルトである強参照の場合は、リスナーのガベージコレクションが回避されます。弱参照では回避されません。
|
ArgumentError — 指定された listener は関数ではありません。
|
関連項目
| dispatchEvent | () | メソッド |
public function dispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。イベントターゲットは EventDispatcher オブジェクトです。これに対して dispatchEvent() メソッドが呼び出されます。
event:Event — イベントフローに送出されるイベントオブジェクトです。イベントが再度送出されると、イベントのクローンが自動的に作成されます。イベントが送出された後にそのイベントの target プロパティは変更できないため、再送出処理のためにはイベントの新しいコピーを作成する必要があります。
|
Boolean —
値が true の場合、イベントは正常に送出されました。値が false の場合、イベントの送出に失敗したか、イベントで preventDefault() が呼び出されたことを示しています。
|
Error — イベント送出再帰が上限に達しました。
|
| hasEventListener | () | メソッド |
public function hasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。これにより、EventDispatcher オブジェクトがイベントタイプの処理をイベントフロー階層のどこで変更したかを判断できます。特定のイベントタイプが実際にイベントリスナーをトリガするかどうかを判別するには、willTrigger() を使用します。
hasEventListener() と willTrigger() の違いは、hasEventListener() では自身が属するオブジェクトのみ検証され、willTrigger() では type パラメータで指定されたイベントのイベントフロー全体が検証されることです。
hasEventListener() が LoaderInfo オブジェクトから呼び出された場合は、呼び出し側がアクセスできるリスナーのみ考慮されます。
type:String — イベントの型です。
|
Boolean —
指定したタイプのリスナーが登録されている場合は true、それ以外の場合は false です。
|
関連項目
| removeEventListener | () | メソッド |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):voidEventDispatcher オブジェクトからリスナーを削除します。対応するリスナーが EventDispatcher オブジェクトに登録されていない場合は、このメソッドを呼び出しても効果はありません。
パラメータtype:String — イベントの型です。
|
|
listener:Function — 削除するリスナーオブジェクトです。
|
|
useCapture:Boolean (default = false) — リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階に対して登録されたかどうかを示します。リスナーがキャプチャ段階だけでなくターゲット段階とバブリング段階にも登録されている場合は、removeEventListener() を 2 回呼び出して両方のリスナーを削除する必要があります。1 回は useCapture() を true に設定し、もう 1 回は useCapture() を false に設定する必要があります。
|
関連項目
| willTrigger | () | メソッド |
public function willTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。指定されたタイプのイベントがこの EventDispatcher オブジェクトまたはその子孫に送出されたときに、イベントリスナーがイベントフローの任意の段階でトリガされる場合、このメソッドは true を返します。
hasEventListener() メソッドと willTrigger() メソッドの違いは、hasEventListener() では自身が属するオブジェクトのみ検証され、willTrigger() メソッドでは type パラメータで指定されたイベントのイベントフロー全体が検証されることです。
willTrigger() が LoaderInfo オブジェクトから呼び出された場合は、呼び出し側がアクセスできるリスナーのみ考慮されます。
type:String — イベントの型です。
|
Boolean —
指定したタイプのリスナーがトリガされた場合は true、それ以外の場合は false です。
|
EventDispatcherExample クラスおよび
EventDispatcher のサブクラスである CustomDispatcher クラスを使用して、
カスタムイベントの作成方法および送出方法を示します。この例では、次の処理を実行します。
EventDispatcherExample のコンストラクタは、ローカル変数
dispatcher を作成し、それを新しい CustomDispatcher インスタンスに割り当てます。CustomDispatcher では、
イベントが action という名前で、doAction() メソッドを宣言するようにストリングが設定されています。このメソッドが呼び出されると、EventDispatcher.dispatchEvent() を使用して、
action イベントが作成され、送出されます。dispatcher プロパティが使用されて、action イベントリスナーと
それに関連するサブスクライバメソッド actionHandler() が追加されます。
このメソッドは、イベントが送出されると、イベントに関する情報のみを出力します。doAction() メソッドが呼び出されると、action
イベントが送出されます。
package {
import flash.display.Sprite;
import flash.events.Event;
public class EventDispatcherExample extends Sprite {
public function EventDispatcherExample() {
var dispatcher:CustomDispatcher = new CustomDispatcher();
dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler);
dispatcher.doAction();
}
private function actionHandler(event:Event):void {
trace("actionHandler: " + event);
}
}
}
import flash.events.EventDispatcher;
import flash.events.Event;
class CustomDispatcher extends EventDispatcher {
public static var ACTION:String = "action";
public function doAction():void {
dispatchEvent(new Event(CustomDispatcher.ACTION));
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html