前一段时间我发布了this个问题。我按照我给出的答案,因为它是有道理的。所以我建立了我的主要while循环:
while(running){
endTime = System.currentTimeMillis();
frametime = (endTime - startTime);
test.update(frametime/1000);
test.repaint();
System.out.println(test.yvel + " " + startTime + " " + frametime);
startTime = endTime;
try{
if(1000/30 > System.currentTimeMillis() - endTime)
Thread.sleep((long) (1000/30 - (System.currentTimeMillis() - endTime)));
}
catch(Exception e){}
}
修复了"平滑"动画......然而物理部分被破坏了...我想通过整个循环需要33毫秒,所以帧时间总是等于33,阻止球正常更新。在过去的一个半小时里,我一直在研究解决这个问题的新方法,我提出了一个问题......我试图这样做的方式是不行的,因为没有改变处理while循环所需的时间量?如果我做了一个游戏可能正在更新一个玩家或某些东西使得while循环在某些点比其他更长的时间,那会导致球正确更新吗?....我开始认为我只需要某种计时器,以使其正常工作XD