2014-04-16 100 views
-1

我正在处理的代码涉及一群鸟在画布上快速移动。我需要做的是通过使用System.currentTimeMillis()方法减慢鸟儿刷新屏幕的速度。我需要在一个while循环中使用它,以便它等待20毫秒,然后再让它们移动。我不太确定如何做到这一点。使用SystemCurrentTimeMillis延迟时间

下面是当前的代码:

while(NeWorld.isAlive()) 
{ 
    NeWorld.updateWorld(); 
} 

NewWorld.isAlive允许小鸟走动,和NeWorld.updateWorld()刷新它。它刷新得太快,我需要用System.currentTimeMillis()方法减慢速度,以便每20毫秒刷新一次。

回答

0

如果你把你的updateWorld()逻辑放在一个单独的函数中,你可以用一定的时间间隔来调用它。这是一个例子。

boolean iShouldStillUpdateWorld = true; 
while (iShouldStillUpdateWorld) { 
    if (System.currentTimeMillis() % 20 == 0) { 
     updateWorld(); 
    } 
    iShouldStillUpdateWorld = checkIfIShouldUpdateWorld(); 
} 

这只是坐在一个循环,并检查是否20毫秒已通过。如果是这样,它会调用您的updateWorld()函数,然后检查是否应该继续重复此过程。

+0

如果'updateWorld()'运行的时间少于20毫秒,那么最终会再次运行它而不会暂停运行......此外,我读取问题的方式,您应该等待一个结束时间为20毫秒'updateWorld()'和下一个开始,即不只是每20毫秒。 –