0

幼稚園児に数字を教える学習ゲームを作っています。このようなアニメーションが必要ですが、キャンバスでこのアニメーションをスムーズに実現できません。

この点線を使用して表示されるまったく同じアニメーションが必要です。

まさにこのタイプのアニメーションを実行するようにガイドしてください。

4

1 に答える 1

0

必要なものは次のとおりです。

  • ループ
  • パス定義

ループは、現在の画像の位置と回転を更新する必要があります。次に、更新されたアニメーションを画面に描画します。dispatchDraw メソッドをオーバーライドして、最後に無効化を呼び出すだけです。描画する直前に位置を更新できます。あなたのケースはゲーム プログラミングに似ているので、ゲーム ループに関する記事を探すことができます。

パス定義により、時間に応じて位置を計算できるようになります。たとえば、ベジエ曲線を使用できます。ベジエ曲線の式はパラメトリックで、パラメーターは「時間」です。アニメーション時間を使用すると、パスに沿ってスムーズに移動できます。

一般的なゲーム ループの例: http://www.gameprogblog.com/generic-game-loop/

ベジェ曲線: http://en.wikipedia.org/wiki/B%C3%A9zier_curve

long time = System.currentTimeMillis();
protected void dispatchDraw(Canvas canvas) {
    PointF pos = getBezierPos(System.currentTimeMillis() - time);
    drawImage(pos);
    invalidate();
}
于 2013-07-16T09:28:39.257 に答える