Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 正在从数组中删除子项。。。有时_Actionscript 3_Removechild - Fatal编程技术网

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;
    }
}