AS3错误#1009(removeChild不会工作?)

时间:2012-06-18 15:36:30

标签: flash actionscript removechild

这是我正在进行的一个小型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);
            }

gameplay是我的文档类Game中声明的GamePlayScreen的一个实例。我已经跟踪了enemy.parent它告诉我它是[Object GamePlayScreen],但错误告诉我它是null?

这是错误:

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);
}

它继续绊倒这个错误...... 我很无能......

1 个答案:

答案 0 :(得分:0)

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

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