1

我正在使用 Adob​​e AIR 3.3 在 Flash CS6 中工作,并且在将影片剪辑添加到舞台后无法删除它们。这是我的代码:

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”设置为什么。提前致谢。

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

如果您已将所有星星添加到一个容器中(看起来像您有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 回答