Java 2D游戏 - 在屏幕上绘制fps

时间:2015-06-28 11:37:14

标签: java awt frame-rate

我想在画布上绘制当前的FPS。

if(System.currentTimeMillis() - lastTimer >= 1000) {
    lastTimer += 1000;
    System.out.println(ticks+" ticks, "+frames+" fps");
    fps(null, frames);
    frames = 0;
    ticks = 0;
}

public void fps(int frames) {
    BufferStrategy bs = getBufferStrategy();
    if(bs == null) {
        createBufferStrategy(3);
        return;
    }

    Graphics g = bs.getDrawGraphics();

    String strFrames = Integer.toString(frames);
    g.setColor(new Color(128, 128, 128));
    g.setFont(new Font("Arial", Font.PLAIN, 13));
    g.drawString(strFrames, 20, 20);
    bs.show();

}

^^^ 这就是我试过的,我不知道它是否有用。我刚开始尝试用Java制作游戏。

public void render() {
    BufferStrategy bs2 = getBufferStrategy();
    if(bs2 == null) {
        createBufferStrategy(3);
        return;
    }

    Graphics g = bs2.getDrawGraphics();

    g.drawImage(image, 0, 0, getWidth(), getHeight(), null);

    g.dispose();
    bs2.show();

}

^^^我也有这种方法,也许它必须从那里完成,我不知道。

目前它确实显示了FPS,但闪烁,所以你只看到瞬间的值

1 个答案:

答案 0 :(得分:-2)

我更喜欢使用Swing,因为它可以更轻松地解决您的问题。您只需使用setDoubleBuffered(true),请参阅:http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html

如果你想坚持使用AWT,你需要覆盖update方法来实现doublebuffer,参见: http://www.codeproject.com/Articles/2136/Double-buffer-in-standard-Java-AWT