我嘗試了幾個遊戲機制,並且試圖模仿WoW的週期性事件,比如「每隔z秒x損壞」。在這種情況下,我已經使用了定時器來安排定期任務,在這種情況下,我試圖重新生成健康狀況,但確實需要通過「this」來修改實例變量_mana?我真的需要一個單獨的TimerTask類來「每隔z秒重新生成x健康狀況」嗎?重構Java週期性任務
在C#中,我知道我可以通過簡單地創建一個定時器來處理滴答。我如何用Java來做到這一點?或者這個代碼是否正確(高效)?
private int _mana;
public void regenerate(int amount, int rate)
{
_regenerator = new Timer();
_regenerator.scheduleAtFixedRate(new regenerator(this, amount), 0, rate*1000);
}
public class regenerator extends TimerTask
{
private ManaResource _mr;
private int _amount = 0;
public regenerator(ManaResource mr, int amount)
{
_mr = mr;
_amount = amount;
}
public void run()
{
_mr._mana += _amount;
System.out.println(_mr._mana);
}
}
我沒有意識到你可以從內部類訪問「this」,因爲在我啓動Java之前,我從未讀過關於類內部的類。 – 2010-10-20 01:01:18