Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 参考错误:错误#1069动作脚本3_Arrays_Actionscript 3_Reference - Fatal编程技术网

Arrays 参考错误:错误#1069动作脚本3

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

所以我在这方面已经坚持了大约两个星期,我不知道如何进步

我有一系列电影剪辑,叫做“_main.speederArray”,我正试图制作这样的剪辑,如果它们相互碰撞,那么它们都会被摧毁。这是我在“Speeder类”中检测碰撞的代码

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
            }

        }


    }