/ / Java 2D Game - 画面上にfpsを描画する - Java、awt、フレームレート

Java 2D Game - 画面上にfpsを描画する - Java、awt、フレームレート

現在の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では-2

私はあなたの問題を解決するのがずっと簡単なので、Swingを使うことを好む。 setDoubleBuffered(true)、 見る: http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html

AWTを使用する場合は、ダブルバッファを実装するためにupdateメソッドをオーバーライドする必要があります。以下を参照してください。 http://www.codeproject.com/Articles/2136/Double-buffer-in-standard-Java-AWT