起初问题对我来说似乎很简单,但现在我被卡住了。
场景 我想在我创建的特定路径上移动屏幕上的图像。移动这个图像是在一个线程上进行的,比如:
@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,我需要达到第二个点 50.50。在 updateImageCoordinates() 上计算绘制图像的下一个坐标。我的问题是我不知道如何计算 speedX 和 speedY 以便我从 A 点直线到达 B 点。基本上对于 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 方向的速度。
我附上一张图片作为示例。任何帮助表示赞赏。