我有一个包含几个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'
}
其他类型的循环返回相同的错误。如果我跟踪父对象,它也会打印出正确的对象......所以我很茫然。我错过了一些明显的东西,还是有更好的方法来做到这一点?
答案 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++;
}