AS3.0について初歩的な質問です。


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イベントを消去できるか

よろしくご教示ください!

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/10/22 15:19:03
  • 終了:2010/10/25 22:17:11

ベストアンサー

id:pacochi No.1

ぱこち回答回数246ベストアンサー獲得回数1112010/10/22 17:33:30

ポイント60pt

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 で消去するものを指定するために、関数に名前を付けています。

id:soyuz11

なるほど。

event.target は AS2での this に代わる

書き方なんですね…

thisにして実行したら機能しませんでした(><)

AS2にどっぷり慣れてしまっているので大変です…

とても参考になりました!

2010/10/22 18:03:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません