2013-10-09 2 views
-2

run() 메서드에서 업데이트하는 2 arrylist와의 충돌을 확인하는 데 문제가 있습니다. run() 메소드의 코드는 다음과 같습니다.run() 메서드의 두 ArrayList 충돌 감지

ArrayList enemy = addenemy.getEnemy(); 
     for (int i = 0; i < enemy.size(); i++) { 
      Enemy p = (Enemy) enemy.get(i); 
      if (p.isVisible() == true) { 
       p.update();      
      } else { 
       enemy.remove(i); 

      }} 

ArrayList bullets = CharS.getBullets(); 
     for (int i = 0; i < bullets.size(); i++) { 
      Bullets p = (Bullets) bullets.get(i); 
      if (p.isVisible() == true) { 
       p.update(); 
      } else { 
       bullets.remove(i); 

      }} 

여기에 글 머리 기호 클래스의 콜리 전 코드가 있습니다.

private void checkCollision() { 
    ArrayList enemy = Game.getEnemy(); 
     for (int i = 0; i < enemy.size(); i++) { 
      Enemy e = (Enemy) enemy.get(i); 

     if(r.intersects(e.r)){ 
     visible = false; 

     System.out.println("SHOTED"); 

     }}} 

적 개체가 제거되었을 때 오류가 발생했습니다 (화면을 벗어남). 어떻게 해결할 수 있습니까? 감사합니다

+3

"오류가 있습니다"- 오류가 무엇입니까? –

+0

나는이 메시지를 얻었습니다 : "Thread-3"스레드의 예외 java.lang.NullPointerException – Nizarhdt

+1

예외 스택 추적은 NPE를 일으킨 코드 행을 표시해야합니다. 게시 된 코드에서 예외의 원인이 된 코드 행을 확인하십시오. 또한'checkCollision' 메소드에서'r'은 무엇입니까? –

답변

0

당신은 무엇이든으로 를 정의하고 있습니까? r이 정의 된 곳은 어디에도 없습니다. 이로 인해 NullPointerException 오류가 발생합니다.

스택 추적에서 오류가 발생한 행 번호를 확인하십시오.

+0

여러분, 고맙습니다.'r = null;'이 내 코드에서 발생했습니다. 이제 내 응용 프로그램을 삭제 한 후 정상적으로 실행됩니다. 감사. – Nizarhdt

+0

@ Nizarhdt -이 답을 수락해야합니다 (옆에있는 체크 표시를 클릭하십시오). –