循环和删除存储在Array中的子节点

时间:2013-08-29 00:59:39

标签: arrays actionscript-3 loops

我有一个包含几个MC的数组......我的应用程序中有一个重置清除阵列并从舞台上移除MC。如果我像这样一次测试一个,它工作正常:

if (myArray.length > 0)
            {
            removeChild(myArray[0]);
            }

但是,如果我尝试以某种方式迭代数组以删除所有对象(在这种情况下甚至只有一个),它似乎不知道父对象是什么,因此无法删除它。我已经尝试明确告诉它myArray[0].parent.(removeChild(...)但是它会抛出同样的错误。目前我正在尝试这个:

while (myArray.length > 0)
        {
            removeChild(myArray[0]); // this line 'must be a child of the caller'
        }

其他类型的循环返回相同的错误。如果我跟踪父对象,它也会打印出正确的对象......所以我很茫然。我错过了一些明显的东西,还是有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

您的代码将始终尝试删除myArray中的第一个元素。所以第一次你可以删除元素,元素不​​再是他父母的子元素。当你第二次,你试图再次删除第一个元素,因为元素没有父元素(它上次被删除) ),它会给你一个错误。

所以你应该删除数组中的每个元素,而不是相同的元素。

试试这个

while (myArray.length > 0)
{
   var mc = myArray.shift();
   removeChild(mc);
}

如果你不想删除myArray中的元素,你可以使用一个计数来保存,如果你删除了所有元素。或者只是像你一样使用每个元素。

var count:int = 0;

while (count < myArray.length)
{
   var mc = myArray[count];
   removeChild(mc);
   count++;
}