2012-06-18 44 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

不客气。 –