flash as3删除所有孩子

mhe*_*ers 10 flash children actionscript-3

在flash中是不是有一个简单的"删除所有孩子"功能?我不明白为什么这段代码不起作用.我通过以下方式添加儿

for (var i in project_array[cp].project_type_clips){
        container.header.type_loader.addChildAt(project_array[cp].project_type_clips[i],i);
        loadCount++
    }
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式删除它们

for (var i in project_array[cp].project_type_clips){
        container.header.type_loader.removeChildAt(i);
    }
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,提供的索引超出范围,但是一个剪辑仍然在舞台上.同样,如果我尝试添加它们没有级别,像这样:

for (var i in project_array[cp].project_type_clips){
        container.header.type_loader.addChild(project_array[cp].project_type_clips[i]);
        loadCount++
    }
Run Code Online (Sandbox Code Playgroud)

并删除:

for (var i in project_array[cp].project_type_clips){
        container.header.type_loader.removeChild(project_array[cp].project_type_clips[i]);
    }
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误.

spl*_*ash 46

另一个RemoveAllChildren循环:

while (container.numChildren > 0) {
    container.removeChildAt(0);
}
Run Code Online (Sandbox Code Playgroud)

  • 对于后代,此方法现已弃用.现在我们有`removeChildren()`. (3认同)

wel*_*rat 7

删除对象时,其他子项的childIndex将被更改.因此,您无法使用i的增加值删除子项,但必须从numChildren-1开始然后减少:

for (var i:int = obj.numChildren-1; i >= 0; i--) {
   obj.removeChildAt (i);
}
Run Code Online (Sandbox Code Playgroud)

应该管用.


Nar*_*rek 6

sprite.removeChildren();删除所有孩子,如此处所述.