删除所有数组影片剪辑上的子项

Posted

技术标签:

【中文标题】删除所有数组影片剪辑上的子项【英文标题】:Remove child on all array movieclips 【发布时间】:2014-06-30 20:32:03 【问题描述】:

我正在寻找一种解决方案来从 as3 的舞台上删除影片剪辑列表。我尝试将影片剪辑添加到数组中,并制作一个循环,如果它们存在,则删除它们中的每一个。我必须包含 if contains 因为它在没有它的情况下将我发回:“错误 #2025:提供的 DisplayObject 必须是调用者的子对象。”

var array: Array = new Array;

var symbol1: MovieClip = new Symbol1;
var symbol2: MovieClip = new Symbol1;

array.push(symbol1);
array.push(symbol2);

stage.addChild(array[1]);

for (var i = 0; i < array.length; i++) 
    if (contains(array[i])) 
        stage.removeChild(array[i]);
        trace("removed symbol[i]");
    


我是不是用错了数组?

【问题讨论】:

【参考方案1】:

试试 stage.contains(array[i])

【讨论】:

【参考方案2】:

对于更模块化的代码(无论父级都可以重用),尝试这样做:

for (var i = 0; i < array.length; i++) 
    if (array[i].parent)  //check to see if this item has a parent
        array[i].parent.removeChild(array[i]); //tell the parent to remove this child
        trace("removed symbol [i]");
    

这样,如果您稍后决定将所有项目放在容器中而不是舞台中,则无需更改代码。

【讨论】:

以上是关于删除所有数组影片剪辑上的子项的主要内容,如果未能解决你的问题,请参考以下文章

删除movieclip子项的动作脚本

as3 以普通影片剪辑的形式访问子项(gotoAndPlay 等)

用flash as3语言如何将影片剪辑存入一个数组以及如何访问?

影片剪辑数组 ActionScript 3

检测数组中影片剪辑内的对象与另一个对象数组之间的碰撞

如何从导入到数组的 png 中创建影片剪辑?