問題は最初は非常に単純に思えましたが、今は行き詰まっています。
シナリオ 私が作成した特定のパス上で、画面上の画像を移動したいと考えています。この画像の移動は、次のようなスレッドで行われています。
@Override
public void run() {
Canvas c;
while (run) {
c = null;
try {
c = panel.getHolder().lockCanvas(null);
synchronized (panel.getHolder()) {
panel.updateImageCoordinates();
panel.onDraw(c);
}
} finally {
if (c != null) {
panel.getHolder().unlockCanvasAndPost(c);
}
}
}
移動したい画像の場合、移動先の主要なポイントを含むリストがあります。各座標には次のものがあります。
public class Coordinates {
private int x = 0;
private int y = 0;
private int speedX=0;
private int speedY=0;
}
たとえば、最初のポイントは -5;-30 で、2 番目のポイント 50.50 に到達する必要があります。画像を描画するための次の座標の計算は updateImageCoordinates() で行われます。私の問題は、点 A から点 B に直線で到達するように、speedX と speedY を計算する方法がわからないことです。基本的に updateImageCoorindates() を実行するたびに、次のことを行う必要があります。
image.currentX= image.currentX+speedX;
image.currentY= image.currentY+speedY
//Check if I reached the B point. if so, move to next point.
座標を知っていても、x 方向と Y 方向の速度を計算する方法がわかりません。
例として画像を添付します。どんな助けでも大歓迎です。