言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
イベントターゲットは、Flash® Player および Adobe AIR イベントモデルの重要な部分です。 イベントターゲットは、イベントが表示リスト階層をどのように流れるかに関して中心的な役割を果たします。マウスのクリックやキー入力などのイベントが発生すると、Flash Player または AIR アプリケーションによって、イベントオブジェクトが表示リストのルートからイベントフローに送出されます。 イベントオブジェクトは、表示リストを移動してイベントターゲットに到達すると、そこから引き返して表示リストを往復します。このイベントターゲットとの往復は、概念として次の 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 | ||
指定されたオブジェクトのプリミティブな値を返します。 | 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, Flash Lite 4 |
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, Flash Lite 4 |
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。
イベントリスナーが正常に登録された後に、addEventListener()
をさらに呼び出して優先度を変更することはできません。リスナーの優先度を変更するには、最初に removeListener()
を呼び出す必要があります。その後、同じリスナーを新しい優先度レベルで再度登録できます。
リスナーが登録された後に、addEventListener()
(type
または useCapture
に別の値を設定)を再度呼び出すと、別のリスナー登録が作成されることに注意してください。例えば、最初にリスナーを登録するときに useCapture
を true
に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。同じリスナーオブジェクトを使用して再度 addEventListener()
を呼び出すと(このとき、useCapture
に false
を設定)、異なる 2 つのリスナーが登録されます。1 つはキャプチャ段階でリスニングするリスナーで、もう 1 つはターゲット段階とバブリング段階でリスニングするリスナーです。
ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。
イベントリスナーが不要になった場合は、removeEventListener()
を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。ガベージコレクションでは、オブジェクトの送出が行われている限り、リスナーを削除しないので、イベントリスナーは自動的には削除されません(useWeakReference
パラメーターが true
に設定されていない場合)。
EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。
イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガーされません。ただし、バブリング段階など、イベントフローの後の段階でトリガーすることができます。
イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガーされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。
パラメーター
type:String — イベントのタイプです。
| |
listener:Function — イベントを処理するリスナー関数です。この関数は、次の例のように、Event オブジェクトを唯一のパラメーターとして受け取り、何も返さないものである必要があります。
function(evt:Event):void 関数の名前は任意に付けられます。 | |
useCapture:Boolean (default = false ) —
リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階で動作するかどうかを判断します。useCapture を true に設定すると、リスナーはキャプチャ段階のみでイベントを処理し、ターゲット段階またはバブリング段階では処理しません。useCapture を false に設定すると、リスナーはターゲット段階またはバブリング段階のみでイベントを処理します。3 つの段階すべてでイベントを受け取るには、addEventListener を 2 回呼び出します。useCapture を true に設定して呼び出し、useCapture を false に設定してもう一度呼び出します。
| |
priority:int (default = 0 ) — イベントリスナーの優先度レベルです。優先度は、符号付き 32 bit 整数で指定します。数値が大きくなるほど優先度が高くなります。優先度が n のすべてのリスナーは、優先度が n-1 のリスナーよりも前に処理されます。複数のリスナーに対して同じ優先度が設定されている場合、それらは追加された順番に処理されます。デフォルトの優先度は 0 です。
| |
useWeakReference:Boolean (default = false ) — リスナーへの参照が強参照と弱参照のいずれであるかを判断します。デフォルトである強参照の場合は、リスナーのガベージコレクションが回避されます。弱参照では回避されません。 クラスレベルメンバー関数はガベージコレクションの対象外であるため、クラスレベルメンバー関数の |
例外
ArgumentError — 指定された listener は関数ではありません。
|
dispatchEvent | () | メソッド |
public function dispatchEvent(event:Event):Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
イベントをイベントフローに送出します。イベントターゲットは 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, Flash Lite 4 |
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。これにより、EventDispatcher オブジェクトがイベントタイプの処理をイベントフロー階層のどこで変更したかを判断できます。特定のイベントタイプが実際にイベントリスナーをトリガーするかどうかを判別するには、willTrigger()
を使用します。
hasEventListener()
と willTrigger()
の違いは、hasEventListener()
では自身が属するオブジェクトのみ検証され、willTrigger()
では type
パラメーターで指定されたイベントのイベントフロー全体が検証されることです。
hasEventListener()
が LoaderInfo オブジェクトから呼び出された場合は、呼び出し側がアクセスできるリスナーのみ考慮されます。
パラメーター
type:String — イベントのタイプです。
|
Boolean — 指定したタイプのリスナーが登録されている場合は true 、それ以外の場合は false です。
|
関連する API エレメント
removeEventListener | () | メソッド |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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, Flash Lite 4 |
指定されたイベントタイプについて、この 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 Lite 4 |
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。このイベントはブロードキャストイベントです。したがって、このイベントに対して登録されているリスナーを持つすべての EventDispatcher オブジェクトがこのイベントを送出します。 ブロードキャストイベントの詳細については、DisplayObject クラスを参照してください。
ACTIVATE
定数は、type
プロパティ(activate
イベントオブジェクト)の値を定義します。
注意:このイベントには「キャプチャ段階」と「バブリング段階」はありません。したがって、ターゲットが表示リストにあるかないかに関わらず、潜在的なターゲットにはイベントリスナーを直接追加する必要があります。
AIR for TV デバイスでは、このイベントが自動的に送出されることはありません。手動での送出は可能です。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | activate イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。 |
関連する API エレメント
deactivate | イベント |
flash.events.Event
プロパティ Event.type =
flash.events.Event.DEACTIVATE
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。このイベントはブロードキャストイベントです。したがって、このイベントに対して登録されているリスナーを持つすべての EventDispatcher オブジェクトがこのイベントを送出します。 ブロードキャストイベントの詳細については、DisplayObject クラスを参照してください。
Event.DEACTIVATE
定数は、type
プロパティ(deactivate
イベントオブジェクト)の値を定義します。
注意:このイベントには「キャプチャ段階」と「バブリング段階」はありません。したがって、ターゲットが表示リストにあるかないかに関わらず、潜在的なターゲットにはイベントリスナーを直接追加する必要があります。
AIR for TV デバイスでは、このイベントが自動的に送出されることはありません。手動での送出は可能です。
このイベントには、次のプロパティがあります。
プロパティ | 値 |
---|---|
bubbles | false |
cancelable | false は、キャンセルするデフォルトの動作がないことを示します。 |
currentTarget | イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 |
target | deactivate イベントに対するリスナーが登録された任意の DisplayObject インスタンスです。 |
関連する API エレメント
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)); } }
Tue Jun 12 2018, 10:34 AM Z