Actionscript 3 ActionScript 3.0参数错误:2025(删除子问题)
每当我在Adobe Flash CS4中编译项目时,都会遇到以下错误消息:Actionscript 3 ActionScript 3.0参数错误:2025(删除子问题),actionscript-3,removechild,Actionscript 3,Removechild,每当我在Adobe Flash CS4中编译项目时,都会遇到以下错误消息: ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display::DisplayObjectContainer/removeChild() at stageRotation/spawnParticle() at flash.utils::Timer/_tim
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at stageRotation/spawnParticle()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
生成错误的代码如下所示:
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
}
}
for(变量i:int=0;i
欢迎您的任何意见。谢谢。:) 通过循环阵列中的所有粒子,可以从显示对象中删除子对象。但是,我看不到接下来在何处删除对数组本身中的子级的引用。所以,如果您再次通过particleArrayFoward循环,您将尝试删除一个已经删除的显示对象,我将假设它正在发生
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
particleArrayForward[i]=null;//this will fix it but now the length of array will never shrink
}
}
for(变量i:int=0;i
更好的是:
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
}
}
particleArrayForward = new Array();
//or particleArrayForward.length = 0;
for(变量i:int=0;i
否则,如果不再次循环通过该阵列,则在某个位置将一个子对象添加到该阵列中,该子对象不是要从中删除的显示对象的子对象。通过循环通过阵列中的所有粒子,将子对象从显示对象中删除。但是,我看不到接下来在何处删除对数组本身中的子级的引用。所以,如果您再次通过particleArrayFoward循环,您将尝试删除一个已经删除的显示对象,我将假设它正在发生
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
particleArrayForward[i]=null;//this will fix it but now the length of array will never shrink
}
}
for(变量i:int=0;i
更好的是:
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
}
}
particleArrayForward = new Array();
//or particleArrayForward.length = 0;
for(变量i:int=0;i
否则,如果您没有再次循环该数组,则在某个地方您正在向该数组添加一个子元素,该子元素不是您试图从中删除的显示对象的子元素。
removeChild
当传递的参数不是调用该方法的父元素的子元素时,会引发此错误。粒子是否作为子对象添加到此对象中的另一个子容器
确保它确实是调用方的子对象:
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null && particleArrayForward[i].parent == this) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
}
}
removeChild
当传递的参数不是调用该方法的父级的子级时,抛出此错误。粒子是否作为子对象添加到此对象中的另一个子容器
确保它确实是调用方的子对象:
for (var i:int = 0; i < particleArrayForward.length; i++ ) {
if (particleArrayForward[i] != null && particleArrayForward[i].parent == this) {
trace("particleArrayForward[" + i + "]:" + particleArrayForward[i]);
this.removeChild(particleArrayForward[i]);
}
}