そうかdispatchEvent()を使えばいいんだ
眠りに就く前のベッドの中で前回のエントリーがどうも気になって考えてたら、別の方法を思いつきました。
リスナー登録したオブジェクトのdispatchEventを呼んでやるだけ。実際にはクリックはしていないんだけれど、手動でクリックイベントを発生させるわけですね。これならイベントリスナーが受取るパラメータの型も本来通りのMouseEventのままでOK。
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); sprite.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); //この時点でclickイベントが発生 function myMethod(event:MouseEvent):void { trace(event.type); }
このやり方はAS2.0で以下のようにしてMovieClipのイベントリスナーを呼ぶのと同じ感じだと思います。
mc.onRelease = myMethod; mc.onRelease(); //この時点でonReleaseイベントが発生 function myMethod():Void { trace("onRelease"); }
ということで、前回の僕のやり方はやっぱり邪道みたい。さて、スッキリしたところで、寝よう。