0

What is the usual way to implement animations (e.g. a composite with a changing position, in SWT) so that they look equally fast on all machines?

The naive approach would be to use timestamps, to stop the time untill the next animation step.

Is there a more professional way?

4

2 回答 2

2

javax.swing.Timer经常使用它,它非常适用于一致的动画。Frame您所要做的就是实现一个Panel实现ActionListener.

计时器actionPreformed(...)以构造函数中指定的间隔(或者如果需要,可以稍后)调用该方法,并且您可以从Timer间隔执行所有重绘。通常这涉及更新您需要的任何对象的状态并调用repaint()相关对象Panel

确保调用Timer'start()方法。这让我很头疼!

于 2012-08-27T07:51:03.397 回答
1

唯一的方法是使用时间戳;幼稚和专业的方法在使用方式上有所不同

天真的方法使用线程和Thread.sleep(). 专业的方法使用计时器以特定的时间间隔运行代码,并让计时器决定如何处理延迟和抖动。

您可以了解有关计时器的更多信息,查看课程TimerTimerTask. java.util.Timer.scheduleAtFixedRate(TimerTask, Date, long)应该是一个好的开始。请注意,代码是在新线程中执行的,因此您需要使用常用工具将事件注入 UI 线程的队列。

于 2012-08-27T07:41:29.360 回答