幼稚園児に数字を教える学習ゲームを作っています。このようなアニメーションが必要ですが、キャンバスでこのアニメーションをスムーズに実現できません。
この点線を使用して表示されるまったく同じアニメーションが必要です。
まさにこのタイプのアニメーションを実行するようにガイドしてください。
必要なものは次のとおりです。
ループは、現在の画像の位置と回転を更新する必要があります。次に、更新されたアニメーションを画面に描画します。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();
}