2013-10-09 1 views
-2

У меня проблема с проверкой столкновения с 2 arraylist, что обновление в методе run(). вот мой код в методе run():Два метода ArrayList в run() Обнаружение столкновений

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. Укажите, какая строка кода в вашем опубликованном коде вызвала исключение. Кроме того, что такое 'r' в методе' checkCollision'? –

ответ

0

Вы определяете r как ничего? Я не вижу нигде, где определяется r. Это приведет к ошибке NullPointerException.

Проверьте трассировку стека на номер строки, в которой происходит ошибка.

+0

благодарю вас, его вызванный 'r = null;' в моем коде. теперь мое приложение работает нормально после удаления. Благодарю. – Nizarhdt

+0

@Nizarhdt - Вы должны принять этот ответ (нажав галочку рядом с ним). –