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回まで
  • 登録:
  • 終了:2010/10/25 22:17:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pacochi No.1

回答回数247ベストアンサー獲得回数113

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません