java游戏循环中未处理的时间
我在看notch的游戏循环,我不明白unprocessedTime变量的含义是什么java游戏循环中未处理的时间,java,game-loop,Java,Game Loop,我在看notch的游戏循环,我不明白unprocessedTime变量的含义是什么 long now = System.nanoTime(); unprocessedTime += now - lastTime; lastTime = now; 如果有人能给我解释一下这两个变量之间的区别,我将不胜感激。谢谢 public void run() { requestFocus(); Image image = new BufferedImage(320, 240, Buffered
long now = System.nanoTime();
unprocessedTime += now - lastTime;
lastTime = now;
如果有人能给我解释一下这两个变量之间的区别,我将不胜感激。谢谢
public void run() {
requestFocus();
Image image = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
setScreen(new TitleScreen(this));
long lastTime = System.nanoTime();
long unprocessedTime = 0;
[b] try {
Thread.sleep(500);
} catch (InterruptedException e1) {
e1.printStackTrace();
}[/b]
while (running) {
Graphics g = image.getGraphics();
long now = System.nanoTime();
unprocessedTime += now - lastTime;
lastTime = now;
int max = 10;
[b]while (unprocessedTime > 0) {
unprocessedTime -= 1000000000 / 60;
fps = unprocessedTime;
screen.update(input);
input.update();
if (max-- == 0) {
unprocessedTime = 0;
break;
}
}[/b]
screen.render(g);
g.dispose();
try {
started = true;
g = getGraphics();
g.drawImage(image, 0, 0, GAME_WIDTH * SCREEN_SCALE, GAME_HEIGHT * SCREEN_SCALE, 0, 0, GAME_WIDTH, GAME_HEIGHT, null);
g.dispose();
} catch (Throwable e) {
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这是以纳秒为单位计算上次触发事件之间的时间间隔 根据Java文档(如果您需要了解) System.nanoTime() 返回最精确的可用系统计时器的当前值, 以纳秒为单位。此方法只能用于测量经过的时间 与任何其他系统或挂钟时间概念无关。 返回的值表示纳秒,因为某些固定但 任意时间(可能在将来,因此值可能为负值)。 该方法提供纳秒精度,但不一定 纳秒精度。没有保证多久一次 价值观会改变。跨度大于的连续调用的差异 大约292年(263纳秒)无法准确计算 由于数值溢出而经过的时间
向我们展示完整的代码,但它似乎是所有循环的总时间。