パッケージflash.events
クラスpublic class EventDispatcher
継承EventDispatcher Inheritance Object
実装 IEventDispatcher
サブクラス AnimatorBase, ApplicationUpdater, ApplicationUpdaterUI, Camera, DataProvider, DisplayObject, DRMManager, FileReference, FileReferenceList, FileStream, Icon, IKManager, IKMover, IME, LoaderInfo, LocalConnection, Locale, Microphone, NativeApplication, NativeMenu, NativeMenuItem, NativeWindow, NetConnection, NetStream, NetStreamPlayOptions, PrintJob, RadioButtonGroup, Screen, ServiceMonitor, ShaderJob, SharedObject, Socket, Sound, SoundChannel, SQLConnection, SQLStatement, StyleSheet, Timer, Transition, TransitionManager, Tween, URLLoader, URLStream, XMLSignatureValidator, XMLSocket

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

EventDispatcher クラスは、イベントを送出するすべてのクラスの基本クラスです。 EventDispatcher クラスは、IEventDispatcher インターフェイスを実装し、DisplayObject クラスの基本クラスです。EventDispatcher クラスでは、表示リストの任意のオブジェクトをイベントターゲットにすることができるので、IEventDispatcher インターフェイスのメソッドを使用できます。

イベントターゲットは、Flash® Player および Adobe®(AIR™)イベントモデルの重要な部分です。 イベントターゲットは、イベントが表示リスト階層をどのように流れるかに関して中心的な役割を果たします。マウスのクリックやキー入力などのイベントが発生すると、Flash Player または AIR アプリケーションによって、イベントオブジェクトが表示リストのルートからイベントフローに送出されます。 イベントオブジェクトは、表示リストを移動してイベントターゲットに到達すると、そこから引き返して表示リストを往復します。このイベントターゲットとの往復は、概念として次の 3 つの段階に分けられます。キャプチャ段階は、ルートからイベントターゲットのノードの直前のノードまでが対象となります。ターゲット段階は、イベントのターゲットノードのみが対象となります。バブリング段階は、表示リストのルートまでの戻りにあるすべての後続ノードが対象となります。

一般に、ユーザー定義クラスがイベント送出機能を得る最も簡単な方法は、EventDispatcher を拡張することです。クラスが既に別のクラスを拡張していて拡張が不可能な場合、代わりに IEventDispatcher インターフェイスを実装し、EventDispatcher メンバーを作成して、集約された EventDispatcher に呼び出しをルーティングする単純なフックを記述できます。

例を表示



パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義元
  
EventDispatcher クラスのインスタンスを集約します。
EventDispatcher
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
  
イベントをイベントフローに送出します。
EventDispatcher
  
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
  
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
  「ブロードキャスト イベント」- Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
  「ブロードキャストイベント」- Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
コンストラクタの詳細
EventDispatcher()コンストラクタ
public function EventDispatcher(target:IEventDispatcher = null)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 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
ランタイムバージョン: AIR 1.0 Flash Player 9

イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。

イベントリスナーが正常に登録された後に、addEventListener() をさらに呼び出して優先度を変更することはできません。 リスナーの優先度を変更するには、最初に removeListener() を呼び出す必要があります。 その後、同じリスナーを新しい優先度レベルで再度登録できます。

リスナーが登録された後に、addEventListener()type または useCapture に別の値を設定)を再度呼び出すと、別のリスナー登録が作成されることに注意してください。例えば、最初にリスナーを登録するときに useCapturetrue に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。 同じリスナーオブジェクトを使用して再度 addEventListener() を呼び出すと(このとき、useCapturefalse を設定)、異なる 2 つのリスナーが登録されます。1 つはキャプチャ段階でリスニングするリスナーで、もう 1 つはターゲット段階とバブリング段階でリスニングするリスナーです。

ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。

イベントリスナーが不要になった場合は、removeEventListener() を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。 ガベージコレクターは参照を有するオブジェクトを削除しないため、登録されているイベントリスナーに関係したオブジェクトはメモリから自動的に除去されません。

EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。

イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガされません。ただし、バブリング段階など、イベントフローの後の段階でトリガすることができます。

イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。

パラメータ

type:String — イベントのタイプです。
 
listener:Function — イベントを処理するリスナー関数です。この関数は、次の例のように、Event オブジェクトを唯一のパラメータとして受け取り、何も返さないものである必要があります
function(evt:Event):void

関数の名前は任意に付けられます。

 
useCapture:Boolean (default = false)リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階で動作するかどうかを判断します。useCapturetrue に設定すると、リスナーはキャプチャ段階のみでイベントを処理し、ターゲット段階またはバブリング段階では処理しません。 useCapturefalse に設定すると、リスナーはターゲット段階またはバブリング段階のみでイベントを処理します。 3 つの段階すべてでイベントを受け取るには、addEventListener を 2 回呼び出します。useCapturetrue に設定して 1 回呼び出し、useCapturefalse に設定してもう 1 回呼び出します。
 
priority:int (default = 0) — イベントリスナーの優先度レベルです。優先度は、符号付き 32 ビット整数で指定します。数値が大きくなるほど優先度が高くなります。優先度が n のすべてのリスナーは、優先度が n-1 のリスナーよりも前に処理されます。複数のリスナーに対して同じ優先度が設定されている場合、それらは追加された順番に処理されます。 デフォルトの優先度は 0 です。
 
useWeakReference:Boolean (default = false) — リスナーへの参照が強参照と弱参照のいずれであるかを判断します。デフォルトである強参照の場合は、リスナーのガベージコレクションが回避されます。弱参照では回避されません。

クラスレベルメンバー関数はガベージコレクションの対象外であるため、クラスレベルメンバー関数の useWeakReference は、ガベージコレクションの制限とは無関係に true に設定できます。ネストされた内部の関数であるリスナーに対して useWeakReferencetrue に設定すると、その関数はガベージコレクションされ、永続的ではなくなります。inner 関数に対する参照を作成(別の変数に保存)した場合、その関数はガベージコレクションされず、永続化された状態のままになります。


例外
ArgumentError — 指定された listener は関数ではありません。

関連項目

dispatchEvent()メソッド 
public function dispatchEvent(event:Event):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

イベントをイベントフローに送出します。イベントターゲットは EventDispatcher オブジェクトです。これに対して dispatchEvent() メソッドが呼び出されます。

パラメータ

event:Event — イベントフローに送出されるイベントオブジェクトです。イベントが再度送出されると、イベントのクローンが自動的に作成されます。イベントが送出された後にそのイベントの target プロパティは変更できないため、再送出処理のためにはイベントの新しいコピーを作成する必要があります。

戻り値
Boolean — 値が true の場合、イベントは正常に送出されました。値が false の場合、イベントの送出に失敗したか、イベントで preventDefault() が呼び出されたことを示しています。

例外
Error — イベント送出再帰が上限に達しました。
hasEventListener()メソッド 
public function hasEventListener(type:String):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 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
ランタイムバージョン: AIR 1.0 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
ランタイムバージョン: AIR 1.0 Flash Player 9

指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。指定されたタイプのイベントがこの EventDispatcher オブジェクトまたはその子孫に送出されたときに、イベントリスナーがイベントフローの任意の段階でトリガされる場合、このメソッドは true を返します。

hasEventListener()willTrigger() メソッドの違いは、hasEventListener() では自身が属するオブジェクトのみ検証され、willTrigger() メソッドでは type パラメータで指定されたイベントのイベントフロー全体が検証されることです。

willTrigger() が LoaderInfo オブジェクトから呼び出された場合は、呼び出し側がアクセスできるリスナーのみが考慮されます。

パラメータ

type:String — イベントのタイプです。

戻り値
Boolean — 指定したタイプのリスナーがトリガされた場合は true、それ以外の場合は false です。
イベントの詳細
activate イベント
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.ACTIVATE

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

「ブロードキャスト イベント」- Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。このイベントはブロードキャストイベントです。したがって、このイベントに対して登録されているリスナーを持つすべての EventDispatcher オブジェクトがこのイベントを送出します。 ブロードキャストイベントの詳細については、DisplayObject クラスを参照してください。

ACTIVATE 定数は、type プロパティ(activate イベントオブジェクト)の値を定義します。

注意:このイベントには「キャプチャ段階」と「バブリング段階」はありません。したがって、ターゲットが表示リストにあるかないかに関わらず、潜在的なターゲットにはイベントリスナーを直接追加する必要があります。

このイベントには、次のプロパティがあります。

プロパティ
bubbles false
cancelable false は、キャンセルするデフォルトの動作がないことを示します。
currentTarget イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target activate イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。

関連項目

deactivate イベント  
イベントオブジェクトの型: flash.events.Event
プロパティ Event.type = flash.events.Event.DEACTIVATE

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

「ブロードキャストイベント」- Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。このイベントはブロードキャストイベントです。したがって、このイベントに対して登録されているリスナーを持つすべての EventDispatcher オブジェクトがこのイベントを送出します。 ブロードキャストイベントの詳細については、DisplayObject クラスを参照してください。

Event.DEACTIVATE 定数は、type プロパティ(deactivate イベントオブジェクト)の値を定義します。

注意:このイベントには「キャプチャ段階」と「バブリング段階」はありません。したがって、ターゲットが表示リストにあるかないかに関わらず、潜在的なターゲットにはイベントリスナーを直接追加する必要があります。

このイベントには、次のプロパティがあります。

プロパティ
bubbles false
cancelable false は、キャンセルするデフォルトの動作がないことを示します。
currentTarget イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
target deactivate イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。

関連項目

例の使用法
EventDispatcherExample.as

次の例では、EventDispatcherExample クラスと CustomDispatcher クラス(EventDispatcher のサブクラス)を使用して、カスタムイベントの作成方法および送出方法を示します。 この例では、次の処理を実行します。
  1. EventDispatcherExample のコンストラクタは、ローカル変数 dispatcher を作成し、それを新しい CustomDispatcher インスタンスに割り当てます。
  2. CustomDispatcher では、イベントが action という名前で、doAction() メソッドを宣言するようにストリングが設定されています。 このメソッドが呼び出されると、action イベントが作成され、EventDispatcher.dispatchEvent() を使用して送出されます。
  3. dispatcher プロパティが使用されて、action イベントリスナーとそれに関連するサブスクライバメソッド actionHandler() が追加されます。このメソッドは、イベントが送出されるとイベントに関する情報のみを出力します。
  4. 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));
    }
}