2012-06-18 46 views
0

這是從一個小的Flash遊戲一個小片段我工作:AS3錯誤#1009(removeChild之只是不會工作?)

這一點從我GamePlayScreen類:

public function handleKeyboard(e:KeyboardEvent):void { 
     if(e.type == KeyboardEvent.KEY_DOWN && e.keyCode == Keyboard.ENTER) { 
      var enemy:EnemyShip = new EnemyShip(); 
      enemyships.push(enemy); 
      addChild(enemyships[enemyships.length-1]); 
     } 
    } 

和這個位是導致錯誤的(我用*標記行)

for each (var enemy:EnemyShip in Game.gameplay.enemyships) { 
      if(this.hitTestObject(enemy)) { 
       *enemy.parent.removeChild(enemy); 
      } 

gameplay是GamePlayScreen的一個實例,在我的文檔類Game中聲明。我已經追蹤到敵人,它告訴我這是[Object GamePlayScreen],但是錯誤告訴我它是空的?

這是錯誤:

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
at Laser1/moveUp()[C:\Dev\Projects\Gamedev\Flash\classes\Laser1.as:23] 

我tryed一切,追蹤在每一行,仍然沒有結果......甚至當我使用

if(Game.gameplay.contains(enemy) { 
    enemy.parent.removeChild(enemy); 
} 

它繼續蹣跚此錯誤再次... 我很無能...

回答

0

一個簡單的解決方案可能是檢查值是否爲空,敵人仍然有一個父母。

for each (var enemy:EnemyShip in Game.gameplay.enemyships) { 
    if(enemy && enemy.parent && this.hitTestObject(enemy)) { 
    enemy.parent.removeChild(enemy); 
    } 
} 
+0

我不知道爲什麼,但固定它...我確實非常的追蹤敵人,enemy.parent withing同樣的事情,如果條款,他們都回來的東西比空不同。無論如何感謝! – xirb22

+0

不客氣。 –