【发布时间】:2015-06-28 11:37:13
【问题描述】:
我想在 Canvas 上绘制当前的 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,但会闪烁,因此您只能看到瞬间的值
【问题讨论】:
-
你的问题是什么?
-
您的页面在 fps 和渲染输出之间翻转。一步将所有内容呈现到同一页面
-
这行得通,但为了能够做到这一点,我必须在不传入所需参数的情况下调用函数
标签: java awt frame-rate