2

我正在使用 Java 制作游戏,目前我正在使用 Timers 来处理我的所有动画和游戏控件。但是我无法选择正确的方法来提高计时器的速度。随着游戏的进行,我的游戏应该越来越快,我发现有很多方法可以提高我的对象的速度,但我不确定哪一种最有效。

例如,假设 intxpos是增加对象 x​​position 的变量。

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 的毫秒参数减小到:Timer timer = new Timer(50, new ActionListener()在第 1 行来提高速度。

或者我可以添加第二个 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();                                 
    }                                              
}   

你认为哪一个最有效?还是我应该结合所有这些技术?感谢您的任何回复。

4

1 回答 1

4
  • 保持 Timer 节拍稳定、不变。
  • 使用双打或 Point2D.Double 存储您的逻辑位置和速度。
  • 不要依赖计时器间隔的准确性。
  • 根据速度和系统时间的变化计算位置变化。
于 2013-05-20T02:34:09.657 回答