0

所以前段时间我发布了这个问题。我遵循了我给出的答案,因为它是有道理的。所以我像这样构建了我的主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

4

0 回答 0