【发布时间】:2010-10-20 00:44:00
【问题描述】:
我正在尝试一些游戏机制,并尝试模仿《魔兽世界》的周期性事件,例如“每 z 秒 x 次伤害”。到目前为止,我已经使用 Timers 来安排定期任务,在这种情况下,我试图重新生成健康,但是否真的有必要通过“this”来修改实例变量_mana?我真的需要一个单独的 TimerTask 类来“每 z 秒重新生成 x 健康”吗?
在 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);
}
}
【问题讨论】: