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