[英]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.