Java - 使FPS正常工作

时间:2017-10-13 14:02:55

标签: java performance frames frame-rate

我刚刚用Java制作了一个Pong游戏,但我对FPS的运作方式有些疑问。目前,游戏的运行速度与计算机可以处理的速度一样快,如果我在更快的计算机上运行游戏,那么游戏的加速速度将比正常速度快。我通过添加计时器来解决这个问题,以防止游戏运行得太快:

timer = new Timer(5, this);
timer.start();

但是,由于计时器的原因,无论计算机有多快,FPS都无法超过特定限制。当FPS下降而不是减慢程序时,我希望它像真正的电脑游戏一样“落后”。我该怎么做呢?我想强制游戏以一定的速度运行,因此FPS会下降,而不是程序放慢。

我的FPS计数器目前看起来像这样:

if(System.currentTimeMillis() - time >= 1000){
        time = System.currentTimeMillis();
        fps = newfps;
        newfps = 0;
    }
    else{
        newfps++;
    }
    g.setFont(new Font("Arial", Font.BOLD, 25));
    g.drawString(fps + "", 5, 22);

如果我不清楚我的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

这是一个线程问题。使用(至少)一个线程为您的游戏进行所有计算,并使用另一个线程进行渲染。这意味着渲染周期将独立于后台处理,并且不应该具有减慢它们的能力。