0

这是我正在开发的一个小 Flash 游戏的一个小片段:

这一点来自我的 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);
            }

game 是在我的文档类 Game 中声明的 GamePlayScreen 的一个实例。我已经追踪了enemy.parent,它告诉我它是[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]

我尝试了一切,跟踪每一行,但仍然没有结果......即使我使用

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

它继续再次偶然发现这个错误......我一无所知......

4

1 回答 1

0

一个简单的解决方案可能是检查该值是否不为 null 并且敌人仍然有父级。

for each (var enemy:EnemyShip in Game.gameplay.enemyships) {
  if(enemy && enemy.parent && this.hitTestObject(enemy)) {
    enemy.parent.removeChild(enemy);
  }
}
于 2012-06-18T16:30:18.650 回答