我在從陣列中刪除MovieClip時遇到問題。從陣列AS3中刪除MC
我收到此錯誤:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Spiker/loop()".
尖峯(主攻手)是越來越刪除,但錯誤仍然讓我很煩。任何想法如何解決這一問題?
這裏是我的代碼:
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Spiker extends MovieClip {
public var spikeDirection:int = 1;
private var removed = false;
public function Spiker() {
// constructor code
trace("Spiker added");
addEventListener(Event.ENTER_FRAME, loop);
}
private function loop (evt){
this.x += spikeDirection * 10;
for(var i:int = 0; i < this["parent"].enemyList.length; i++){
if(removed == false){
if(this["parent"].enemyList[i].hitTestObject(this)){
trace("Spikerhit");
removed = true;
remove(evt);
}
}
}
}
public function remove (evt){
removeEventListener(Event.ENTER_FRAME, loop);
this["parent"].removeChild(this);
}
}
爲什麼使用this [「parent」]與簡單的'parent'是什麼原因? – Marty
那麼,有時候只有「父母」的作品,有時它不。在我看來,在這種情況下,「父母」只會在「removeChild(this)」前面工作,而不是在「enemyList」前面,這個[「父母」]「比父母」 – schou
嗯,如果對象實際上沒有父對象,那麼'parent'就是'null'。 「this [」parent「]'和'parent'之間沒有什麼區別,除了需要更長的輸入時間,而另一個在體面的IDE中提供準確的代碼建議。如果你在'if(parent!== null)'中包含了處理父項的所有內容,那麼你可能會發現你的錯誤停止了:-) – Marty