2013-10-09 45 views
-2

我有檢查碰撞與更新run()方法中的2 arraylist的問題。這裏是我的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作爲任何東西?我沒有看到r被定義的地方。這會導致你的NullPointerException錯誤。

檢查堆棧跟蹤中發生錯誤的行號。

+0

謝謝你們,它在我的代碼中造成'r = null;'。現在我的應用程序正常運行後刪除它。謝謝。 – Nizarhdt

+0

@Nizarhdt - 你應該接受這個答案(通過點擊旁邊的複選標記)。 –