Arrays 参考错误:错误#1069动作脚本3
所以我在这方面已经坚持了大约两个星期,我不知道如何进步 我有一系列电影剪辑,叫做“_main.speederArray”,我正试图制作这样的剪辑,如果它们相互碰撞,那么它们都会被摧毁。这是我在“Speeder类”中检测碰撞的代码Arrays 参考错误:错误#1069动作脚本3,arrays,actionscript-3,reference,Arrays,Actionscript 3,Reference,所以我在这方面已经坚持了大约两个星期,我不知道如何进步 我有一系列电影剪辑,叫做“_main.speederArray”,我正试图制作这样的剪辑,如果它们相互碰撞,那么它们都会被摧毁。这是我在“Speeder类”中检测碰撞的代码 private function detectionHandler():void{ //trace("array length", _main.speederArray.length); detectionID = _main.gameC
private function detectionHandler():void{
//trace("array length", _main.speederArray.length);
detectionID = _main.gameCounter;
for ( var i:int = _main.speederArray.length -1; i >= 0; i--){
var speeder:Speeder = _main.speederArray[i];
if(speeder.destroyMe) continue;
if(speeder.detectionID == this.detectionID) continue;
if (boxIntersect(this, speeder)){
trace("collision");
destroyMe = true;
speeder.destroyMe = true;
}
}
}
下面是此代码所指的boxIntersect函数。它在同一个班级
private function boxIntersect ( speeder1:Speeder, speeder2:Speeder):Boolean{
if(speeder1.x + speeder1.distRight < speeder2.x + speeder2.distLeft) return false; //checking for overlap on X axis
if(speeder1.x + speeder1.distLeft > speeder2.x + speeder2.distRight) return false;
if(speeder1.y + speeder1.distBot < speeder2.y + speeder2.distTop) return false; // checking for overlap on Y axis
if(speeder1.y + speeder1.distTop > speeder2.y + speeder2.distBot) return false;
return true;
}
现在,游戏运行,但是一旦同一数组中的两个对象发生碰撞,我会在输出窗口中获得碰撞轨迹,但在我得到以下结果之后:
ReferenceError:Error#1069:在com.game.Speeder上找不到属性1,并且没有默认值。
在com.game::Spawner/updateArray()上
不知道这意味着什么:(
感谢大家的帮助!问题出在线路上
removeChild(speeder[i]);
在更新函数中。
Speeder没有名为1
的属性,1显然来自for循环
所以,要解决这个问题,您只需调用
removeChild(speeder);
speeder
已经是数组中i
位置的对象。将[]放在对象后面与从该对象访问属性是一样的。实际上,您是这样做的:
removeChild(speeder.1);
非常感谢你,我爱你
private function updateArray(e:Event):void{
for(var i:int = _main.speederArray.length - 1; i>=0; i--){
var speeder:Speeder = _main.speederArray[i];
if(speeder.destroyMe){
//trace("hello");
removeChild(speeder[i]); // take it off the stage
_main.speederArray[i] = null;
_main.speederArray.splice(i, 1); //remove it from the array
}
}
}