Event通知元から何かしらのメッセージを自由にリスナーオブジェクトに送信するためのメモ。
Dynamic化したカスタムEvent、DynamicEventを作り、dispatchEventでEventを送信する前にDynamicEventのインスタンスに適当にプロパティをぶっ込んでそのままdispatchEventで送ってやればOK。
これでEvent受信元は、引数で渡されるDynamicEventのさっき作ったプロパティから値が取り出せる。
DynamicEventクラスはこんな感じ。Eventクラス継承してDynamic付加してるだけ。
package { import flash.events.Event; public dynamic class DynamicEvent extends Event { public static const SOMETHING:String = "something"; public function DynamicEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false):void { super( type, bubbles, cancelable ); } } }
送信元の処理はこんな感じ。
var event:DynamicEvent = new DynamicEvent( DynamicEvent.SOMETHING ); //適当なプロパティをこしらえる event.message = "クソ眠い"; //Event発行 dispatchEvent( event );
Eventオブジェクトを受け取るイベントハンドラはこんな感じ。
hoge.addEventListener( DynamicEvent.SOMETHING, function( e:DynamicEvent ) { //「クソ眠い」が出力される。 trace( e.message ); });
#追記
@lalalilaさんに教えてもらったDataEventを使えばString型のデータなら同様の事が可能っぽい。lalalilaさんありがとうございます。
#さらに追記
Eventクラスのサブクラスについてもひとつ注意点が。
[AS3]Eventクラスのサブクラスを作る時の注意点 | source-lab. note