0

我有一个包含几个 MC 的阵列...我的应用程序中有一个重置,可以清除阵列并从舞台上删除 MC。如果我像这样一次测试一个,效果很好:

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

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

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

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

4

1 回答 1

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++;
}
于 2013-08-29T01:41:02.463 回答