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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现动画以在所有机器上同样快速地运行相关的知识,希望对你有一定的参考价值。

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

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

有更专业的方式吗?

答案

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

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

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

另一答案

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

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

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

以上是关于实现动画以在所有机器上同样快速地运行的主要内容,如果未能解决你的问题,请参考以下文章

在ViewPager上,在onPageSelected上的片段上启动动画

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉

如何将活动转换为片段以在抽屉中使用

从DevC ++转向命令行编译

如何配置应用程序以在具有高 DPI 设置(例如 150%)的机器上正确运行?

如何配置应用程序以在具有高 DPI 设置(例如 150%)的机器上正确运行?