1

これは私のコードの一部です:

private var sun:Sun;
private var aantalSun:int = 5;
private var counter:int;

for (counter = 0; counter < aantalSun; counter++)
{
    sun = new Sun();
    addChild(sun);
}

コード全体が実行されると、ステージ上に「メニュー」というボタンがあります。そのボタンをクリックすると、メイン メニューに戻りたいのですが、ステージにはまだ 5 つの太陽があります。メニュー ボタンをクリックしたときに 5 つの太陽を削除するにはどうすればよいですか (たとえば、ループを停止しますか?)。私はすでに removeChild(sun); を試しましたが、太陽が 1 つだけ消えます。

4

4 に答える 4

3

実際には、5 回の繰り返しのループは非常に高速に実行されるため、ボタンを押してもループから抜け出すことはできません。

私が理解したのは、ボタンが押されたときに追加された 5 つの太陽を削除したいということです。

私が提案するのは、5 つの太陽の親を作成し、それに追加して、5 つの子すべてが削除されるように親を削除することです。5 つの子参照を維持する必要はなく、1 つの親参照のみを維持する必要があります。

于 2012-06-13T12:14:10.333 に答える
0

必要なもの(下部の関数)と、元の投稿されたコードへの小さな変更は次のとおりです。

private var sun:Sun;
private var aantalSun:int = 5;
private var counter:int;

private var sunContainer:Sprite = new Sprite();
addChild(sunContainer);

for (counter = 0; counter < aantalSun; counter++)
{
    sun = new Sun();
    sunContainer.addChild(sun);
}




//function for clearing all suns
function clearSuns(e:Event = null):void {
    var i:int = sunContainer.numChildren;
    while(i--){
        sunContainer.removeChildAt(i);
    }
}
于 2012-06-15T18:36:20.910 に答える
0

「太陽」を配列に格納し、これをループしてすべての太陽を削除します。

private var sun:Sun;   
private var aantalSun:int = 5;   
private var counter:int;
private var sunArray:Array = new Array();

for (counter = 0; counter < aantalSun; counter++) { 
    sun = new Sun();
    sunArray.push(sun);
    addChild(sun); 
} 

function RemoveSuns() {
    for (var i:int = 0; i < sunArray.length; i++) { 
        removeChild(sunArray[i]);
    } 
}

または、すべてを削除します。

function RemoveAll() {
    for(var i:int = 0; i < this.numChildren; i++) {
        this.removeChildAt(i);
    }
}
于 2012-06-13T13:00:12.433 に答える
0

ループを停止し、break コマンドで終了します。したがって、var menuClicked のように確認できる条件がある場合は、次のようにすることができます。

for (counter = 0; counter < aantalSun; counter++)
{
 if(menuClicked) break;
 sun = new Sun();
 addChild(sun);
}
于 2012-06-13T12:12:53.580 に答える