0

これは、私が取り組んでいる小さなフラッシュ ゲームからの小さなスニペットです。

私の 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 で宣言された 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);
}

再びこのエラーに遭遇し続けます...私は無知です...

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 に答える