【问题标题】:android canvas onDraw timingandroid canvas onDraw 时序
【发布时间】:2013-01-18 14:14:56
【问题描述】:
  1. 我正在制作一个 Android 游戏,其中一些图形元素移动得很快。 我将使用 Canvas,但担心会在不规则的间隔中调用 onDraw 方法,从而使快速元素以不规则的速度移动。 有没有办法确保定期调用 onDraw 方法。

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

请帮助,

同样的

【问题讨论】:

    标签: android timing ondraw


    【解决方案1】:

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

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

    • 确实,该方法可能不会按预定义的时间间隔调用
    • 用于绘制对象,而不是更新对象

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多