我试图一次性从舞台上删除一堆不同的东西。 我有3个动态创建的文本字段和2个动态创建的影片剪辑。 我通过我的文档类购买创建它们,编辑它们的属性然后......将它们添加到舞台上。
addChild(myText1);
addChild(myText2);
addChild(myText3);
addChild(myMovieClip1);
addChild(myMovieClip2);
我想删除它们,我试过......
removeChild(myText1);
ETC
但这不起作用。 任何人都可以帮助我。
答案 0 :(得分:2)
如果要从当前对象中删除所有内容,可以执行以下操作:
while (numChildren > 0) removeChildAt(0);
如果你的DisplayObjects在舞台上,你可以这样做:
stage.removeChild(myText1);
答案 1 :(得分:1)
如果您只想删除这些特定对象,那么您需要在某处存储对它们的引用。
另一种解决方案是在创建每个对象时填充.name属性,然后在将来使用该名称来获取对象的引用:
var __dynamicMovieClip:MovieClip = new MovieClip();
__dynamicMovieClip.name = "foo";
addChild(__dynamicMovieClip);
然后在以后的某个时间:
removeChild(getChildByName("foo"));
getChildByName虽然带来了相当多的开销,所以重复调用它或者在当前显示列表是复杂/深度的情况下真的不是一个好主意
答案 2 :(得分:1)
您需要为每个动态创建的对象提供成员变量,以便您可以在用于创建它们的函数之外引用它们。如果你只需要一个引用来从舞台中删除它们,那么一个数组将会运行得很好。
private var objectsToDelete : Array = [];
private function someFunction ( ) : void
{
objectsToDelete.push(myText1);
objectsToDelete.push(myText2);
objectsToDelete.push(myText3);
objectsToDelete.push(myMovieClip1);
objectsToDelete.push(myMovieClip2);
}
private function removeObjects () : void
{
var i : int = 0;
var max : int = objectsToDelete.length;
for ( i; i < max; i++ )
{
removeChild( objectsToDelete[ i ] );
}
}