| パッケージ | flash.events |
| クラス | public class EventDispatcher |
| 継承 | EventDispatcher Object |
| 実装 | IEventDispatcher |
| サブクラス | Animator, Camera, ContextMenu, ContextMenuItem, DataProvider, DisplayObject, FileReference, FileReferenceList, IME, LoaderInfo, LocalConnection, Locale, Microphone, NetConnection, NetStream, PrintJob, RadioButtonGroup, SharedObject, Socket, Sound, SoundChannel, StyleSheet, Timer, Transition, TransitionManager, Tween, URLLoader, URLStream, XMLSocket |
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
イベントターゲットは、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 | ||
|
イベントをイベントフローに送出します。
| EventDispatcher | ||
|
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | ||
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() |
指定されたプロパティが存在し列挙できるかどうかを示します。
| Object | |
|
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | ||
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。
| Object | |
|
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | ||
| イベント | 概要 | 定義元 | ||
|---|---|---|---|---|
| Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。 | EventDispatcher | |||
| Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。 | EventDispatcher | |||
| EventDispatcher | () | コンストラクタ |
public function EventDispatcher(target:IEventDispatcher = null)
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
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
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。
イベントリスナーが正常に登録された後に、addEventListener() をさらに呼び出して優先度を変更することはできません。リスナーの優先度を変更するには、最初に removeListener() を呼び出す必要があります。その後、同じリスナーを新しい優先度レベルで再度登録できます。
リスナーが登録された後に、addEventListener() (type または useCapture に別の値を設定) を再度呼び出すと、別のリスナー登録が作成されることに注意してください。たとえば、最初にリスナーを登録するときに useCapture を true に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。同じリスナーオブジェクトを使用して再度 addEventListener() を呼び出すと (このとき、useCapture に false を設定) 、異なる 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
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
イベントをイベントフローに送出します。イベントターゲットは EventDispatcher オブジェクトです。これに対して dispatchEvent() メソッドが呼び出されます。
パラメータ
event:Event — イベントフローに送出されるイベントオブジェクトです。イベントが再度送出されると、イベントのクローンが自動的に作成されます。イベントが送出された後にそのイベントの target プロパティは変更できないため、再送出処理のためにはイベントの新しいコピーを作成する必要があります。
|
Boolean — 値が true の場合、イベントは正常に送出されました。値が false の場合、イベントの送出に失敗したか、イベントで preventDefault() が呼び出されたことを示しています。
|
Error — イベント送出再帰が上限に達しました。
|
| hasEventListener | () | メソッド |
public function hasEventListener(type:String):Boolean
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
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):void
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
EventDispatcher オブジェクトからリスナーを削除します。対応するリスナーが EventDispatcher オブジェクトに登録されていない場合は、このメソッドを呼び出しても効果はありません。
パラメータ
type:String — イベントのタイプです。
|
|
listener:Function — 削除するリスナーオブジェクトです。
|
|
useCapture:Boolean (default = false) — リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階に対して登録されたかどうかを示します。リスナーがキャプチャ段階だけでなくターゲット段階とバブリング段階にも登録されている場合は、removeEventListener() を 2 回呼び出して両方のリスナーを削除する必要があります。1 回は useCapture() を true に設定し、もう 1 回は useCapture() を false に設定する必要があります。
|
関連項目
| willTrigger | () | メソッド |
public function willTrigger(type:String):Boolean
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。指定されたタイプのイベントがこの EventDispatcher オブジェクトまたはその子孫に送出されたときに、イベントリスナーがイベントフローの任意の段階でトリガされる場合、このメソッドは true を返します。
hasEventListener() と willTrigger() メソッドの違いは、hasEventListener() では自身が属するオブジェクトのみ検証され、willTrigger() メソッドでは type パラメータで指定されたイベントのイベントフロー全体が検証されることです。
willTrigger() が LoaderInfo オブジェクトから呼び出された場合は、呼び出し側がアクセスできるリスナーのみ考慮されます。
パラメータ
type:String — イベントのタイプです。
|
Boolean — 指定したタイプのリスナーがトリガされた場合は true、それ以外の場合は false です。
|
| activate | イベント |
flash.events.Event
flash.events.Event.ACTIVATE
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
Flash Player がオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。
type プロパティ (activate イベントオブジェクト) の値を定義します。
メモ :このイベントは "キャプチャ段階" を通過せず、ターゲットが表示リストにあるかどうかに関わらず、ターゲットに直接送出されます。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | ACTIVATE イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。 |
| deactivate | イベント |
flash.events.Event
flash.events.Event.DEACTIVATE
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
Flash Player がオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。
type プロパティ (deactivate イベントオブジェクト) の値を定義します。
メモ :このイベントは "キャプチャ段階" を通過せず、ターゲットが表示リストにあるかどうかに関わらず、ターゲットに直接送出されます。
このイベントには、次のプロパティがあります。
| プロパティ | 値 |
|---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | DEACTIVATE イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。 |
EventDispatcherExample クラスと CustomDispatcher クラス (EventDispatcher のサブクラス) を使用して、カスタムイベントの作成方法および送出方法を示します。この例では、次の処理を実行します。
EventDispatcherExample のコンストラクタは、ローカル変数 dispatcher を作成し、それを新しい CustomDispatcher インスタンスに割り当てます。CustomDispatcher では、イベントが action という名前で、doAction() メソッドを宣言するようにストリングが設定されています。このメソッドが呼び出されると、action イベントが作成され、EventDispatcher.dispatchEvent() を使用して送出されます。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/flash/9.0_jp/ActionScriptLangRefV3/flash/events/EventDispatcher.html