Actionscript 3 正在从数组中删除子项。。。有时
以上方法很好。后来我把它移除了。。。下面的代码也很好用Actionscript 3 正在从数组中删除子项。。。有时,actionscript-3,removechild,Actionscript 3,Removechild,以上方法很好。后来我把它移除了。。。下面的代码也很好用 function addEffect() { var thisEffect = new MyEffect; //Simple movieClip addChild(thisEffect); effectArray[0] = thisEffect; } 但是,在我再次使用这些函数后,有时在下一个回合中,有时在两个回合后,我会得到: 错误#2025:提供的DisplayObject必须是调用者的子对象。 奇怪的是,我正在使用相同的技术来添加和
function addEffect()
{
var thisEffect = new MyEffect; //Simple movieClip
addChild(thisEffect);
effectArray[0] = thisEffect;
}
但是,在我再次使用这些函数后,有时在下一个回合中,有时在两个回合后,我会得到:
错误#2025:提供的DisplayObject必须是调用者的子对象。
奇怪的是,我正在使用相同的技术来添加和删除其他电影嘴唇,而且它对其他一切都很好。我没有引用效应器阵列或其内部的任何东西,除了这两个函数之外,这两个函数都在Main内部。这很正常。
将myEffect添加到数组时,数组中只存储对myEffect的引用。
当您试图通过数组访问该对象时,一切都正常工作,并且数组中对myEffect的引用每次都正确指向该对象
但每次都不对的是,是否存在一个参考点所在的对象。如果它已删除,则它不能再是目标对象的子对象,因此您将得到该错误
在removeEffect函数中要做的是检查引用是否存在,而不是对象。如果不将引用从数组中移除,则引用始终存在。删除对象后,也删除引用。一切正常
function removeEffect()
{
if(effectArray[0] != null)
{
removeChild(effectArray[0]);
}
}
当我做一些跟踪语句时,我发现即使它将对象从舞台上移除,对象仍保留在阵列中,当我尝试重复它时,它再次尝试移除相同的片段,而该片段不再在舞台上。。。effectArray=[]修复了此问题。
function removeEffect()
{
if(effectArray[0] != null)
{
removeChild(effectArray[0]);
effectArray[0] = null;
}
}