2013-05-20 57 views
0
public void boss(final Boss boss) { 
    forward.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      boss.setHp(boss.getHp() - 1); 
      log("" + boss.getHp()); 
     } 
    }); 
    if(boss.getHp() > 0){ 
     boss(boss); 
    } 
} 

所以,在上面的代碼中,我試圖讓bossHp每次點擊前減1。代碼有一個stackoverflow錯誤。 (這只是在一個無限循環中調用boss()。)每當用戶點擊前進時,如何讓bossHp減1,然後當bossHp < = 0時停止?按鈕點擊n次時執行的動作

注意:按鈕向前也在其他地方使用。

謝謝!

編輯:對不起這個錯別字!顯示的代碼現在是正確的代碼。有任何想法嗎?謝謝!

澄清:

每一次前進按鈕被點擊我想有發生,爲它檢查bossHp UNTIL bossHp < = 0。在這一點我想退出的方法,但在此之前沒有那麼

+0

您是否看到點擊處理程序或boss函數本身的無限循環?既沒有直接的無限循環,也沒有可能的boss.getHp,boss.setHp或bossCombat。我們需要他們的代碼來檢查。 –

+1

這段代碼片段很好。但我相信你在'bossCombat(boss)'中調用'boss()'會導致inf loop –

+0

'bossCombat()' – FoamyGuy

回答

0

這應該起作用。您也不必將boss作爲函數參數傳遞。您可以將該對象作爲字段保存在您的課堂中。

public void boss(final Boss boss) { 
    forward.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(boss.getHp() > 0){ 
       boss.setHp(boss.getHp() - 1); 
       log("" + boss.getHp()); 
      } else { 
       //boss is dead 
      } 
     } 
    }); 
}