2012-05-26 4 views
0

화면 상단에서 적의 스프라이트를 일정 간격으로 생성하는 안드로이드 게임을 만들고 있습니다. 구문 오류가 없지만 게임을 실행할 때이 함수 때문에 충돌이 발생합니다.적의 안드로이드 생성

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

나는 모든 것을 시도했지만 작동하지 않습니다! 당신이 받고있는 캐치되지 않는 예외가 NullPointerException이기 때문에 당신이 holderEnemy 내부의 모든 요소가 적절한 타입으로 인스턴스화되어 있는지 확인해야합니다,

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) 
+1

49 행이 있습니까? –

답변

1

: 여기 내 로그 고양이 충돌 보고서입니다. null을 참조 할 수 없습니다. 이는 어레이에서 기본적으로 제공되는 것입니다. 배열을 인스턴스화하는 것만으로는 충분하지 않습니다

Enemy[] holderEnemy = new Enemy[1000]; 

: 당신과 같은 요소의 배열을 가지고가는 경우에

은 약간 점을 장황하게합니다. 배열을 반복하고 각 요소에 대해 새 Enemy을 작성해야합니다. 그렇지 않으면 [0, numVisibleEnemies]의 범위 내에서 배열 요소가 올바르게 인스턴스화되도록 보장해야합니다.

(개체 유형을 추측하고 있지만 원리가 적용된다는 점에 유의하십시오.)

관련 문제