1

在此处输入图像描述

我正在使用画布创建自己的拖放。为了选择球,我在它周围创建了一个不可见的边界框。单击此区域将允许您拖动球。

在鼠标移动时,我正在使用

xBall = xMouse;
yBall = yMouse;

所以球会跟随鼠标。这很好,除了在拖动的一开始,球的中心会跳到我不想要的鼠标所在的位置。所以我需要考虑鼠标和球之间的偏移量。

谁能解释这背后的数学原理?根据我的推理,我需要将偏移量添加到鼠标的位置。所以我明白xBall = xMouse + (xBall - xMouse)了,但正如你所看到的,这最终给了我xBall = xBall没有用的。

我哪里错了?

4

1 回答 1

2

您需要确定初始点击发生的位置,并且应针对此初始坐标执行偏移计算。

在鼠标按下时,存储初始点击坐标:

xInitial = xMouse;
yInitial = yMouse;
movingFlag = true;

鼠标移动时:

if (movingFlag) {
    xBall = xBall + xMouse - xInitial;
    yBall = yBall + yMouse - yInitial;
}

鼠标上移:

movingFlag = false;
于 2013-06-21T13:50:12.233 回答