フレームレートコードが正しいとは確信できません。また、探しているものの正確な例を見つけることができませんでした。
基本的に、私はサブクラスjava.awt.Component
化しており、メソッド内で関数paint(Graphics)
を呼び出しcalculateFrameRate()
ます。これを以下に示します。でインクリメンタル描画は行いませんupdate()
。これからの数は多いようですが、Componentクラスの固有のダブルバッファリングは、ペイントがレンダリングされている量の2倍の量で呼び出されていることを意味するのでしょうか。私はダブルバッファのものにさびていますが、それは完全に間違っているかもしれません。
フレームレートの方法は次のとおりです。
private List<Long> updateTimes = new ArrayList<Long>();
private void calculateFrameRate() {
long time = System.currentTimeMillis();
updateTimes.add(new Long(time));
// We will have the wrong framerate for the first 30 draws. No big.
float timeInSec = (time - updateTimes.get(0)) / 1000f;
currentFrameRate_ = 30f / timeInSec;
if (updateTimes.size() == 31)
updateTimes.remove(0);
}
乾杯、
ハミー