Actionscript 3 如何从舞台上移除一堆动态创建的东西?

Actionscript 3 如何从舞台上移除一堆动态创建的东西?,actionscript-3,flash-cs4,Actionscript 3,Flash Cs4,我试图一次从舞台上删除一堆不同的东西。 我有3个动态创建的文本字段和2个动态创建的电影剪辑。 我通过我的文档类buy将它们添加到舞台,创建它们,编辑它们的属性,然后 addChild(myText1); addChild(myText2); addChild(myText3); addChild(myMovieClip1); addChild(myMovieClip2); 我想把它们全部删除,我已经试过了 removeChild(myText1); 等 但这不起作用。 有人能帮我吗。如果要

我试图一次从舞台上删除一堆不同的东西。 我有3个动态创建的文本字段和2个动态创建的电影剪辑。 我通过我的文档类buy将它们添加到舞台,创建它们,编辑它们的属性,然后

addChild(myText1);
addChild(myText2);
addChild(myText3);
addChild(myMovieClip1);
addChild(myMovieClip2);
我想把它们全部删除,我已经试过了

removeChild(myText1); 

但这不起作用。
有人能帮我吗。

如果要删除当前对象中的所有内容,可以执行以下操作:

while (numChildren > 0) removeChildAt(0);
stage.removeChild(myText1);
如果您的DisplayObjects在舞台上,您可以执行以下操作:

while (numChildren > 0) removeChildAt(0);
stage.removeChild(myText1);

如果要删除当前对象中的所有内容,可以执行以下操作:

while (numChildren > 0) removeChildAt(0);
stage.removeChild(myText1);
如果您的DisplayObjects在舞台上,您可以执行以下操作:

while (numChildren > 0) removeChildAt(0);
stage.removeChild(myText1);

如果您只希望能够删除这些特定对象,那么您需要将对它们的引用存储在某个位置

另一种解决方案是在创建每个对象时填充该对象的.name属性,然后在将来使用该名称获取对该对象的引用:

var __dynamicMovieClip:MovieClip = new MovieClip();
__dynamicMovieClip.name = "foo";

addChild(__dynamicMovieClip);
然后在以后的某个时候:

removeChild(getChildByName("foo"));

但是getChildByName会带来相当大的开销,因此重复调用它确实不是一个好主意,或者在当前显示列表很复杂/很深的情况下,如果您只想删除这些特定对象,那么您需要将对它们的引用存储在某个位置

另一种解决方案是在创建每个对象时填充该对象的.name属性,然后在将来使用该名称获取对该对象的引用:

var __dynamicMovieClip:MovieClip = new MovieClip();
__dynamicMovieClip.name = "foo";

addChild(__dynamicMovieClip);
然后在以后的某个时候:

removeChild(getChildByName("foo"));

但是getChildByName会带来相当大的开销,因此重复调用它确实不是一个好主意,或者在当前显示列表很复杂/很深的情况下,您需要为每个动态创建的对象提供成员变量,以便在用于创建对象的函数之外引用它们。如果您只需要一个引用就可以将它们从后台删除,那么数组将非常有用

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 ] );
    }
}
private-var-objectsToDelete:Array=[];
私有函数someFunction():void
{
objectsToDelete.push(myText1);
objectsToDelete.push(myText2);
objectsToDelete.push(myText3);
objectsToDelete.push(myMovieClip1);
objectsToDelete.push(myMovieClip2);
}
私有函数removeObjects():void
{
变量i:int=0;
var max:int=objectsToDelete.length;
对于(i;i
您需要为每个动态创建的对象提供成员变量,以便在用于创建它们的函数之外引用它们。如果您只需要一个引用就可以将它们从后台删除,那么数组将非常有用

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 ] );
    }
}
private-var-objectsToDelete:Array=[];
私有函数someFunction():void
{
objectsToDelete.push(myText1);
objectsToDelete.push(myText2);
objectsToDelete.push(myText3);
objectsToDelete.push(myMovieClip1);
objectsToDelete.push(myMovieClip2);
}
私有函数removeObjects():void
{
变量i:int=0;
var max:int=objectsToDelete.length;
对于(i;i
但它不在对象中,它只是在舞台上。舞台上还有其他东西,所以我不想删除所有内容,只想删除3个文本字段和2个movieclips。编辑了我的答案。如果这仍然不起作用,请解释:你有例外吗?我想我的问题是,我不能删除子项,因为它们在一个单独的函数中,而不是一个全局变量,因此我不能从单独的方法访问它们,因为我不能引用它们。但是如果他们在舞台上,就必须有办法接近他们,所以我想我正在尝试找出如何将他们从舞台上移除。我刚刚试过stage.removeChild(myText1);但我仍然可以访问未定义的属性myText1。虽然它不在对象中,但它只是在舞台上。舞台上还有其他东西,所以我不想删除所有内容,只想删除3个文本字段和2个movieclips。编辑了我的答案。如果这仍然不起作用,请解释:你有例外吗?我想我的问题是,我不能删除子项,因为它们在一个单独的函数中,而不是一个全局变量,因此我不能从单独的方法访问它们,因为我不能引用它们。但是如果他们在舞台上,就必须有办法接近他们,所以我想我正在尝试找出如何将他们从舞台上移除。我刚刚试过stage.removeChild(myText1);但我仍然可以访问未定义的属性myText1。谢谢堆,我想我可能只需要将它们存储在全局变量中。谢谢堆,我想我可能只需要将它们存储在全局变量中。