AS2で下記のような関数の場合、
function hoge(mc){
mc.i = 0;
mc.onEnterframe = function(){
if(this.i++==50){
trace(this.i);
this.onEntrFrame = null;
}
}
これをAS3.0に書き直すとどのようなコードになるのでしょうか?
知りたいポイントは、
(1)function内でENTER_FRAMEイベントをあるMovieClipにセットできるか
(2)そのENTER_FRAMEイベントを消去できるか
よろしくご教示ください!
hoge の中に全部まとめる必要があるなら、私はこんな風に書きます。
まとめる必要が無いなら、イベント用の関数は hoge の外に書くと思います。(単なる好みです。)
private function hoge (mc:Object):void { mc.i = 0; mc.addEventListener(Event.ENTER_FRAME, mcEnterFrameHandler); function mcEnterFrameHandler (event:Event):void { if (event.target.i++ == 50) { trace(event.target.i); event.target.removeEventListener(Event.ENTER_FRAME, mcEnterFrameHandler); } } }
removeEventListener で消去するものを指定するために、関数に名前を付けています。
なるほど。
event.target は AS2での this に代わる
書き方なんですね…
thisにして実行したら機能しませんでした(><)
AS2にどっぷり慣れてしまっているので大変です…
とても参考になりました!