1

Flash CS6 で Adob​​e AIR 3.3 を使用していますが、ムービー クリップをステージに追加した後、ムービー クリップを削除できません。これが私のコードです:

for(var i = 0; i<starCount; i++)
{
    star = new newStar();
    choiceBoard.addChild(star);
    star.x = 195;
    if(i>=1)
    {
        star.x = 195 + 90*i;
    }
    star.y = 597
}   

これは、私が作成した、星型のムービー クリップを動的に追加する関数の一部です...ムービー クリップを追加し、間にスペースを追加し、次のムービー クリップを追加するなどです。スター ムービー クリップを作成後にすべて削除するにはどうすればよいですか?

私はもう試した:

for(var i = 0; i<starCount; i++)
{
    if(contains(star))
    {
        choiceBoard.removeChild(star);
        trace("removed star");
    }
}

ただし、「starCount」の設定に関係なく、これは 1 つの星のみを削除します。前もって感謝します。

4

3 に答える 3

2
private var stars:Array=[];
for(var i = 0; i<starCount; i++)
{
    star = new newStar();
    stars.push(star);
    choiceBoard.addChild(star);
    star.x = 195 + 90*i;
    star.y = 597
}   

それから試してください

for(var i = 0; i<stars.length; i++)
{
    choiceBoard.removeChild(stars[i]);
    trace("removed star");
}
于 2012-07-01T22:41:12.467 に答える
0

すべてのスターを 1 つのコンテナーに追加し ( を使用したように見えますchoiceBoard)、そのコンテナーに保持したいものが他にない場合は、次のようにして非常に簡単に (そしてすばやく) 星を削除できます。

while(choiceBoard.numChildren)
{
    choiceBoard.removeChildAt(0);
}
于 2012-07-02T08:03:20.760 に答える
0

星は好きな子だけですか? その場合は、次のようにすべての子を削除できます。

choiceBoard.removeChildren();

または、すべての星を配列に追加してから、配列を反復処理してそれらを削除することもできます。

var starArray:Array = [];

//...

for(var i = 0; i<starCount; i++)
{
    star = new newStar();
    //put the star into the array
    starArray.push(star);
    choiceBoard.addChild(star);
    star.x = 195;
    if(i>=1)
    {
        star.x = 195 + 90*i;
    }
    star.y = 597
} 

そして、削除するには:

for(var i = 0; i<starArray.length; i++)
{        
    //remove the star from the display
    choiceBoard.removeChild(starArray[i]);      
    trace("removed star");
}
//clear the array
starArray = [];
于 2012-07-01T22:42:33.677 に答える