有时,当我玩侧滑车时,我会以正常速度移动。但是,有时我的角色移动非常缓慢。代码根本不会更改,因此我认为此currentTimeMillis方法有问题。谁能解释为什么我有时移动得非常慢而其他时候更快?谢谢。
public void run(){ // run method for animation
beforeTime = System.currentTimeMillis();
while(animationDone == false){
jumpCycle();
timeDifference = System.currentTimeMillis() - beforeTime;
sleepTime = 4 - timeDifference;
if(sleepTime < 0)
sleepTime = 2;
try{
Thread.sleep(sleepTime);
}
catch(Exception e){
}
beforeTime = System.currentTimeMillis();
}
isJumping = isFalling = animationDone = false;
}
编辑:对于有相同问题的任何人,我最终都只是使用java.util.Timer和java.util.TimerTask来以独立于平台的精度完成此任务。
最佳答案
动画代码中的固有问题是您依赖时间的流逝来正确制作动画。在任何计算机系统上,由于线程调度,这都是不可能的。
电脑游戏解决此问题的方法是,根据自上次绘制以来经过的时间来更改动画量。这样,无论您的帧速率如何,动画速度都不会改变。