每隔一段时间更新图形



对于图形,每隔一段时间更新屏幕的最佳方式是什么?假设更新方法是用update()调用的,并且所有实际的图形都发生在那里,并且已经处理好了。

我过去曾使用javax.swing.Timer来触发一个操作事件,该事件在指定的时间间隔内运行我的更新方法,但计算机的速度仍然是一个因素。那么,如果我以最好的方式(我对此表示怀疑)进行更新,我该如何将更新留给时间?

Java中的系统时钟调用不一定非常准确。以下是一种在等待指定时间段时考虑更新时间的方法。

在这个例子中,我们每40毫秒更新一次,或者每秒更新25帧。

package com.ggl.testing;
public class TimerRunnable implements Runnable {
    private static final long interval = 40L; // 40 milliseconds
    @Override
    public void run() {
        long startTime = System.currentTimeMillis();
        while (true) {
            update();
            long endTime = System.currentTimeMillis();
            long elapsedTime = endTime - startTime;
            elapsedTime = Math.max((interval - elapsedTime), 5L);
            sleep(elapsedTime);
            startTime = System.currentTimeMillis();
        }
    }
    private void sleep(long interval) {
        try {
            Thread.sleep(interval);
        } catch (InterruptedException e) {
        }
    }
    private void update() {
    }
}

我们看到执行更新方法需要多长时间。我们计算经过的时间,并确保间隔减去经过的时间不会低于5毫秒。如果更新时间超过35毫秒,我们将降低帧速率以跟上。

相关内容

  • 没有找到相关文章

最新更新