有时,当我玩侧滑车时,我会以正常速度移动。但是,有时我的角色移动非常缓慢。代码根本不会更改,因此我认为此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来以独立于平台的精度完成此任务。

最佳答案

动画代码中的固有问题是您依赖时间的流逝来正确制作动画。在任何计算机系统上,由于线程调度,这都是不可能的。

电脑游戏解决此问题的方法是,根据自上次绘制以来经过的时间来更改动画量。这样,无论您的帧速率如何,动画速度都不会改变。

10-04 16:38