提高Java中Timer的速度

时间:2013-05-20 02:20:19

标签: java timer actionlistener increment repaint

我正在使用Java进行游戏,我目前正在使用Timers来完成所有动画和游戏控制。但是我无法选择正确的方法来提高Timer的速度。随着游戏的进行,我的游戏应该越来越快,我发现有很多方法可以提高我的物体的速度,但我不确定哪一种是最有效的。

例如,假设int xpos是增加对象xposition的变量。

Timer timer = new Timer(100, new ActionListener()  //01
{                                                  //02
    public void actionPerformed(ActionEvent e)     //03
    {                                              //04
        xpos++;                                    //05
        repaint();                                 //06
    }                                              //07
}                                                  //08
                                                   //09
timer.start();                                     //10

为了提高速度,我可以将第5行的xpos增量增加到xpos+=2

我还可以通过将Timer的毫秒参数减少到第1行的Timer timer = new Timer(50, new ActionListener()来提高速度。

或者我可以添加第二个Timer来执行相同的任务以使计时器的速度加倍。基本上,我可以这样做:

Mover mover = new Mover();
Timer timer = new Timer(100, mover);        
Timer timer2 = new Timer(100, mover);
timer.start();
timer2.start();

class Mover implements ActionListener
{                                                  
    public void actionPerformed(ActionEvent e)     
    {                                              
        xpos++;                                    
        repaint();                                 
    }                                              
}   

您认为哪一种最有效?或者我应该结合所有这些技术?谢谢你的回复。

1 个答案:

答案 0 :(得分:4)

  • 保持计时器稳定,不变。
  • 使用双打或Point2D.Double存储您的逻辑位置和速度。
  • 不要依赖计时器间隔的准确性。
  • 根据速度和系统时间的变化计算位置变化。