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中
答案 0 :(得分:2)
这很正常。 将myEffect添加到数组时,只有对myEffect的引用存储在数组中。 当你试图通过数组到达那个对象时,一切都正常,并且每次都引用数组中的myEffect指向对象。
但是每次都不正确的是是否存在参考点的对象。如果它已被删除,则它不能再是目标对象的子节点,因此您将收到该错误。
在 removeEffect 函数中执行的操作是检查引用是否存在,而不是对象。如果你不从数组中删除引用,那么引用始终存在。删除对象后,也删除引用。一切都会正常。
function removeEffect()
{
if(effectArray[0] != null)
{
removeChild(effectArray[0]);
effectArray[0] = null;
}
}