new Event()をこうやって使うのはありかな?

マウスイベントに割当てたメソッドを、マウスイベント以外から参照したい場合がたまにあります。例えば以下のような状況で、myMethodをthisからマウスイベントを介さずに呼びたい場合、どうすればいいでしょうか?

var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0x333333);
sprite.graphics.drawRect(0, 0, 100, 20);
sprite.graphics.endFill();
addChild(sprite);

sprite.addEventListener(MouseEvent.CLICK, myMethod);

function myMethod(event:MouseEvent):void {
  trace(event.type);
}

addEventListener()で登録されたリスナーは、パラメータにイベントオブジェクトを受け取る必要があります。ですので、まずmyMethodがマウスイベント以外のタイプのイベントを受け取れるように、パラメータの型をMouseEventからEvent(またはnull*(アスタリスク))にします。

function myMethod(event:Event):void {
  trace(event.type);
}

そしてこのイベントを参照する際には、

myMethod(new Event("hoge"));
//output hoge

のように適当なイベントタイプ名で生成したEventオブジェクトをパラメータとして渡してやります。

んー、なんだかあまりスマートな方法ではない気もしますが、他にやり方が分からなかったのでまぁいいかなぁ。

【追記】
別の方法を思いつきました。