实现动画以在所有机器上同样快速地运行

问题描述 投票:0回答:2

实现动画的常用方法是什么(例如,在SWT中具有位置变化的复合体),以便它们在所有机器上看起来同样快速?

天真的方法是使用时间戳,停止直到下一个动画步骤的时间。

有更专业的方式吗?

java animation swt
2个回答
1
投票

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

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

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


2
投票

我定期使用javax.swing.Timer,它适用于一致的动画。你所要做的就是实现一个实现Frame的类(你甚至可以使它成为你的PanelActionListener)。

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

请务必调用Timerstart()方法。这让我头疼不已!

© www.soinside.com 2019 - 2024. All rights reserved.