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オブジェクトをパラメータとして渡してやります。
んー、なんだかあまりスマートな方法ではない気もしますが、他にやり方が分からなかったのでまぁいいかなぁ。
【追記】
別の方法を思いつきました。