拖放边界框偏移数学

时间:2013-06-21 13:09:48

标签: math canvas drag offset

enter image description here

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

鼠标移动时,我正在使用

xBall = xMouse;
yBall = yMouse;

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

任何人都可以解释这背后的数学吗?根据我的推理,我需要将偏移量添加到鼠标的位置。所以我得到xBall = xMouse + (xBall - xMouse),但正如您所看到的,这最终只会给我xBall = xBall这是没用的。

我哪里错了?

1 个答案:

答案 0 :(得分:2)

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

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

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

鼠标移动:

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

鼠标向上:

movingFlag = false;