2013-02-01 89 views
-1

我正在制作一个游戏演示,其中只有电脑播放,但速度太快。我需要它来展示一切。如何减慢Java Swing应用程序

该程序使用while循环,它没有任何支持事件侦听器的事件。 它只需要电脑做出动作。

+2

'Thread.sleep'可以帮助你。 –

回答

3

您可以有后台任务来触发移动并在移动之间适当地等待。喜欢的东西:

Runnable moveTask = new Runnable() { 
    public void run() { 
     while (true) { 
      Thread.sleep(...); 
      SwingUtilities.invokeLater(theActualMoveHere()); 
     } 
    } 
} 
new Thread(moveTask).start(); 

您将需要添加一个止动装置(通过中断),可能阅历的逻辑,但基本的思路应该工作。

作为睡眠的替代方法,例如,您可以每x毫秒计划一次Timer。请注意,Timer的分辨率不是很好,可能高达30ms,因此可能不够准确。

0

您可以使用线程休眠方法等待X时间。有些事情:

Thread.sleep(4000); 

http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html

如果您需要循环一定数量的次每秒,你可以计算出每次迭代已使用时间,然后睡觉所需要的时间。例如:

boolean cont = true; 
long time0, timeForEach = 1000, time1 = System.currentTimeMillis(); 
while (cont) { 

// Do my things here. 

time0 = System.currentTimeMillis(); 
try { 
    if (timeForEach > time0-time1) { 
    Thread.sleep(timeForEach - (time0-time1)); 
    } 
} catch (InterruptedException e) { 
} 
time1 = time0; 

}

0

当我想在代码事情慢下来,我通常使用定时器,睡眠或等待函数。 你可能有一个迭代/循环(for,while,in等)的函数,用于每一个动作或类似的东西。你可以在这样一个循环的每次迭代之间放置时间。

另一种策略是让计算机在向最终用户展示之前生成所有要做的动作。然后,当你向用户展示每一个动作时,你可以决定在一次动作上花费的时间是多少。