3
  1. 我正在制作一个 Android 游戏,其中一些图形元素移动得很快。我将使用 Canvas,但担心会在不规则的间隔中调用 onDraw 方法,从而使快速元素以不规则的速度移动。有没有办法确保定期调用 onDraw 方法。

  2. 或者,如果我能以毫秒为单位获得系统时间,我可以计算两次连续调用 onDraw 之间的差异,并根据这些快速元素的速度使它们的移动平滑。

请帮助,

萨米尔

4

1 回答 1

1

我将使用 Canvas 但担心 onDraw 方法会在不规则的间隔被调用,从而使快速元素以不规则的速度移动

您不应更新中对象的位置onDraw(),因为:

  • 实际上,该方法可能不会以预定义的时间间隔调用
  • 它旨在绘制对象,而不是更新对象

相反,您可以使用计时器定期调用另一种方法来更新对象/世界。

更新世界后,调用invalidate()View的触发onDraw()方法。如果您的应用程序有一些空闲时间,它将被调用。如果没有,没问题,因为world update method它将继续运行,从而更新你的世界。

(当然,如果您的应用程序太忙,则视图永远不会更新,并且您有问题需要解决!)

或者,如果我能以毫秒为单位获得系统时间,我可以计算两次连续调用 onDraw 之间的差异,并根据这些快速元素的速度使它们的移动平滑。

这就是‘世界更新法’要走的路!它将纠正不规则的计时器间隔。

于 2013-01-18T14:20:06.793 回答