0

画面上部に一定間隔で敵のスプライトをスポーンするAndroidゲームを作っています。構文エラーはありませんが、ゲームを実行すると、次の関数が原因でクラッシュします。

public void updateEnemies() {
    if (numEnemiesCreated == numVisibleEnemies) {
        if (timeLastCreatedEnemy + 1000 < System.currentTimeMillis()) {
            timeLastCreatedEnemy = System.currentTimeMillis();
            boolean createdNewEnemy = false;

            for (int i = 0; i < this.numVisibleEnemies; i++) {
                if (createdNewEnemy == false) {
                    if (holderEnemy[i].isDisposed()) {
                        this.generateNewEnemy(i);
                        createdNewEnemy = true;
                    }
                }
            }
        }

        for(int i = 0; i<numVisibleEnemies; i++){
            if(!holderEnemy[i].isDisposed()){
                holderEnemy[i].move();
            }
        }
    } else {
        holderEnemy[numEnemiesCreated] = new Enemy(context, 0, 0);
        numEnemiesCreated++;
    }
}

私はすべてを試しました、私はそれを動かすことができません!これが私のログ猫のクラッシュレポートです:

05-25 18:49:13.031: W/dalvikvm(6736): threadid=9: thread exiting with uncaught exception (group=0x40015578)
05-25 18:49:13.035: E/AndroidRuntime(6736): FATAL EXCEPTION: Thread-10
05-25 18:49:13.035: E/AndroidRuntime(6736): java.lang.NullPointerException
05-25 18:49:13.035: E/AndroidRuntime(6736):     at com.jlennon.gametest.EnemySpawn.updateEnemies(EnemySpawn.java:49)
05-25 18:49:13.035: E/AndroidRuntime(6736):     at com.jlennon.gametest.MainGamePanel$AnimationThread.update(MainGamePanel.java:94)
05-25 18:49:13.035: E/AndroidRuntime(6736):     at com.jlennon.gametest.MainGamePanel$AnimationThread.run(MainGamePanel.java:61)
4

1 に答える 1

1

キャッチされていない例外は であるため、 内のすべての要素が適切な型にインスタンス化されてNullPointerExceptionいることを確認する必要があります。holderEnemy逆参照はできませんnull。これは、配列でデフォルトで指定されているものです。

次のような要素の配列を取得する場合、ポイントを少し詳しく説明します。

Enemy[] holderEnemy = new Enemy[1000];

配列をインスタンス化するのに十分ではありません。Enemy配列をループして、要素ごとに新しい を作成する必要があります。それ以外の場合は、[0, ) の範囲内で、numVisibleEnemies配列要素が適切にインスタンス化されることを保証する必要があります。

(私はオブジェクトの種類を推測していますが、原則は当てはまります。)

于 2012-05-26T02:09:44.723 に答える