3
  1. 一部のグラフィック要素が速く動く Android ゲームを作成しています。Canvas を使用しますが、onDraw メソッドが不規則な間隔で呼び出され、高速な要素が不規則な速度で移動するのではないかと心配しています。onDraw メソッドが定期的に呼び出されるようにする方法はありますか。

  2. または、システム時間をミリ秒単位で取得できる場合は、onDraw への 2 つの連続した呼び出しの差を取り、これらの高速要素の速度に基づいて動きをスムーズにすることができます。

親切に助けて、

サミール

4

1 に答える 1

1

Canvasを使用しますが、onDrawメソッドが不規則なinterevalsで呼び出され、高速要素が不規則な速度で移動することを恐れています。

次の理由により、のオブジェクトの位置を更新しないでください。onDraw()

  • 実際、メソッドは事前定義された間隔で呼び出されない可能性があります
  • オブジェクトを更新するのではなく、オブジェクトを描画することを目的としています

代わりに、タイマーを使用して定期的に呼び出す別のメソッドでオブジェクト/ワールドを更新します。

ワールドを更新した後、を呼び出してメソッドをトリガーinvalidate()します。アプリケーションに空きがある場合は、呼び出されます。そうでない場合は、が実行され続け、世界が更新されるため、問題はありません。ViewonDraw()world update method

(もちろん、アプリケーションがビジー状態の場合、ビューが更新されることはなく、解決すべき問題があります!

または、システム時間をミリ秒単位で取得できる場合は、onDrawへの2つの連続した呼び出しの差を取り、これらの高速要素の速度に基づいて、それらの動きをスムーズにすることができます。

これが「ワールドアップデートメソッド」に入る方法です!不規則なタイマー間隔を修正します。

于 2013-01-18T14:20:06.793 に答える