[AS3]他のオブジェクトに自由に値を送れるカスタムEvent

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