問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
レス数:4 / 状態:解決済み / No:120 / ATOM
1 名前:みすぺよ 日付:2013/11/11(月)10:32:30 ID:M3aTGAZSDaTq
こんにちは、私はついこの間AS3を始めたばかりの初心者です。
現在、私はAS3を使い ADOBE AIR用にゲームを制作しています。
私は以下のイベントを使い、動作をループさせていますが、エラーが出てしまい困っています。
//------------------------------------------------------
stage.addEventListener(Event.ENTER_FRAME, mainloop);

function mainloop(event:Event):void
{
box.x += 2;
if (box.x > 100){
gotoAndStop("gameover");
}
}
//----------------------------------------------

box と言うMCのX座標が 100を超えた時に
MCや、アクションスクリプトの無い gameover と言う新しいフレームに移動したいのですが、
そのフレームには、box が無いので、Error #1009が出てしまいます。

gameoverのフレームに入ると、アニメーションが流れてゲームが終了する流れにするつもりなのですが、
何とかフレームを移動する際にループを完全に止める方法は無いでしょうか?
よろしくお願いします。
2 名前:通りすがり 日付:2013/11/12(火)15:35:33 ID:ysTiZvdQ5jJW
こんにちは。
移動した後もmainloopがENTER_FRAMEで回っているからエラーになるのですよね。
それであれば、移動してからこのループをremoveEventListenerで削除すれば良いと思います。

//----------------------------------------------

stage.addEventListener(Event.ENTER_FRAME, mainloop);

function mainloop(event:Event):void
{
box.x += 2;
if (box.x > 100){
//ループ終了
stage.removeEventListener(Event.ENTER_FRAME, mainloop);
gotoAndStop("gameover");
}
}

//----------------------------------------------

実際に書き出して試したりはしていないので、エラーが出たらすみません…
3 名前:状態変更 日付:2013/11/12(火)22:18:50 ID:M3aTGAZSDaTq
この質問の状態を『解決』に変更しました。
4 名前:みすぺよ  日付:2013/11/12(火)22:21:04 ID:M3aTGAZSDaTq
ループを一旦止める必要があったのですね。
これでエラーを起こさずフレームを移動する事ができました。
これで作品の続きの制作が出来そうです。

本当にありがとうございました!
このスレッドについて
質問の状態 :
解決済み
投稿開始日 :
2013/11/11(月)10:32:30
投稿終了日 :
2013/11/19(火)22:21:17
投稿者 :
みすぺよ
レス総数 :
4
スレッド番号 :
120
MondoCollectionSystem ver.0x00020000 by Hakuhin