0

了解しました。クリックするとフレーム15に移動するボタンがあります。xpsafetyが0の場合、子を作成し、xpsafetyを1に設定します。したがって、ボタンをもう一度クリックしても、子は表示されず、計算が実行されます。

名声10:

var xpsafety:int = 0;
var xpclip:MovieClip = new xp();

RememberButton.addEventListener(MouseEvent.CLICK, GoToRemember); 


function GoToRemember(evt:MouseEvent):void { 
gotoAndPlay(15, "Scene 1");
if (xpsafety == 0) {
    addChild(xpclip);
    xpclip.x=41;
    xpclip.y=835;
    calculateExp(8);
    xpsafety = xpsafety +1;
}


}

フレーム15:

stop();


    BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety); 

    function GoBackSafety(evt:MouseEvent):void { 
        gotoAndPlay(10, "Scene 1");
        removeChild(xpclip);
        }

私が得るエラーはこれです:ArgumentError:エラー#2025:提供されたDisplayObjectは呼び出し元の子でなければなりません。

それが何を意味するのかわかりません、何かヒントはありますか?どうぞよろしくお願いします。

他の問題ですが、xpsafetyが0に等しくないにもかかわらず、おそらく関連しています(calculateExp(8)が発生するため、関数はオフになります(私は知っています)。

4

4 に答える 4

2

フレームスクリプティングを行ってからしばらく経ちました。すぐに面倒で管理が難しくなるからです。ここを参照 してください。

このxpsaftey問題では、フレーム10に戻ると、スクリプト全体が再度実行され、変数xpsafteyがデフォルト値の。で再定義されています0var xpsafety:intこれを防ぐには、宣言を前のフレームに配置する必要があります。

forループ内の2番目の例xpsafteyは、ifステートメントのスコープ内で再度定義しているため、さらに混乱を招きます。変数スコープについて一般的に読んでおくことをお勧めします。

于 2012-10-26T16:12:04.207 に答える
0

次のようなことをしてみてください:

xpclip.parent.removeChild(xpclip);
于 2012-10-26T14:57:17.417 に答える
-1

xpclipリスナー内から変数にアクセスしようとしています。これを試してください。

var mc:MovieClip = (root as MovieClip).xpchild;
(root as MovieClip).removeChild(mc);

それでもうまくいかない場合mcは、null でないかどうかを確認してください。

于 2012-10-26T15:13:35.310 に答える
-2

私がする必要があるのは、フレーム15 .....のifステートメント内に変数を置くことだけでした:以下のように:

stop();

BackButton.addEventListener(MouseEvent.CLICK, GoBackSafety); 

function GoBackSafety(evt:MouseEvent):void { 
    gotoAndPlay(10, "Scene 1");

    }

var xpclip:MovieClip = new xp();
if (xpsafety==0) {
    var xpsafety:int = 0;
    addChild(xpclip);
    xpclip.x=41;
    xpclip.y=835;
    calculateExp(8);
    xpsafety = xpsafety +1;
    trace(xpsafety);
    } 
于 2012-10-26T15:29:49.983 に答える