从数组中删除子项...有时候

时间:2014-12-01 20:01:30

标签: actionscript-3 removechild

function addEffect()
{
var thisEffect = new MyEffect; //Simple movieClip
addChild(thisEffect);
effectArray[0] = thisEffect;
}

以上工作正常。后来我把它删除了...下面的工作也很好。

function removeEffect()
{
    if(effectArray[0] != null)
    {
     removeChild(effectArray[0]);
    }
}

然而,在我再次使用这些功能之后,下一个转弯,有时两个转弯后我得到:     错误#2025:提供的DisplayObject必须是调用者的子级。 奇怪的是,我使用相同的技术添加和删除其他动画片段,并且它可以正常工作。我没有在这两个函数之外引用effectArray或其中的任何东西,这两个函数都在Main.as中

1 个答案:

答案 0 :(得分:2)

这很正常。 将myEffect添加到数组时,只有对myEffect的引用存储在数组中。 当你试图通过数组到达那个对象时,一切都正常,并且每次都引用数组中的myEffect指向对象。

但是每次都不正确的是是否存在参考点的对象。如果它已被删除,则它不能再是目标对象的子节点,因此您将收到该错误。

removeEffect 函数中执行的操作是检查引用是否存在,而不是对象。如果你不从数组中删除引用,那么引用始终存在。删除对象后,也删除引用。一切都会正常。

function removeEffect()
{
    if(effectArray[0] != null)
    {
     removeChild(effectArray[0]);
     effectArray[0] = null;
    }
}