【发布时间】:2013-01-18 14:14:56
【问题描述】:
我正在制作一个 Android 游戏,其中一些图形元素移动得很快。 我将使用 Canvas,但担心会在不规则的间隔中调用 onDraw 方法,从而使快速元素以不规则的速度移动。 有没有办法确保定期调用 onDraw 方法。
或者,如果我能以毫秒为单位获取系统时间,我可以计算两次连续调用 onDraw 之间的差异,并根据这些快速元素的速度使它们的移动平滑。
请帮助,
同样的
【问题讨论】:
我正在制作一个 Android 游戏,其中一些图形元素移动得很快。 我将使用 Canvas,但担心会在不规则的间隔中调用 onDraw 方法,从而使快速元素以不规则的速度移动。 有没有办法确保定期调用 onDraw 方法。
或者,如果我能以毫秒为单位获取系统时间,我可以计算两次连续调用 onDraw 之间的差异,并根据这些快速元素的速度使它们的移动平滑。
请帮助,
同样的
【问题讨论】:
我打算使用 Canvas,但担心会在不规则的间隔调用 onDraw 方法,从而使快速元素以不规则的速度移动
您应该不更新onDraw()中对象的位置,因为:
相反,您可以使用计时器定期调用另一种方法来更新对象/世界。
更新世界后,在你的View上调用invalidate()来触发onDraw()方法。如果您的应用程序有一些空闲时间,它将被调用。如果没有,那没问题,因为world update method 将继续运行,从而更新您的世界。
(当然,如果您的应用程序太忙,则视图永远不会更新,您有问题要解决!)
或者,如果我能以毫秒为单位获得系统时间,我可以计算两次连续调用 onDraw 之间的差异,并根据这些快速元素的速度使它们的移动平滑。
这就是‘世界更新法’的必经之路! 它将纠正不规则的计时器间隔。
【讨论】: