簡體   English   中英

ReferenceError:錯誤#1069操作腳本3

[英]ReferenceError: Error #1069 Actionscript 3

所以我已經堅持了大約2周,我也不知道該如何進步。

我有一個名為“ _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;

    }

然后這就是我認為問題所在。 我有一個名為“ spawner”的類,這是我要處理正在創建和銷毀的對象的地方。 這是我要根據是否將destroyMe bool設置為true來從數組中拼接對象的代碼。 在這個階段,我已經把自己弄糊塗了,所以任何幫助將不勝感激!

    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
            }

        }


    }

現在,游戲開始運行,但是只要在同一數組中的2個對象發生碰撞,我就會在輸出窗口中獲得碰撞軌跡,但是在得到以下結果后立即可以:

ReferenceError:錯誤#1069:在com.game.Speeder上找不到屬性1,並且沒有默認值。 在com.game::Spawner/updateArray()

不知道是什么意思:(

任何幫助表示感謝,謝謝大家!

問題來自於removeChild(speeder[i]); 在您的更新功能中。 Speeder沒有被稱為1屬性,而1顯然來自您的for循環。

因此,要解決此問題,您只需致電

removeChild(speeder);

speeder已經是數組i上的對象。 將[]放在對象后面就像從其訪問屬性一樣。 本質上,您正在這樣做:

removeChild(speeder.1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM