我正在使用画布创建自己的拖放。为了选择球,我在它周围创造了一个看不见的边界框。单击此区域将允许您拖动球。
鼠标移动时,我正在使用
xBall = xMouse;
yBall = yMouse;
所以球将跟随鼠标。这很棒,除非在拖动的最开始,球的中心将跳到我不想要的鼠标的位置。所以我需要考虑鼠标和球之间的偏移。
任何人都可以解释这背后的数学吗?根据我的推理,我需要将偏移量添加到鼠标的位置。所以我得到xBall = xMouse + (xBall - xMouse)
,但正如您所看到的,这最终只会给我xBall = xBall
这是没用的。
我哪里错了?
答案 0 :(得分:2)
您需要确定初始点击发生的位置,并且应该针对此初始坐标执行偏移计算。
在鼠标按下时,存储初始单击的坐标:
xInitial = xMouse;
yInitial = yMouse;
movingFlag = true;
鼠标移动:
if (movingFlag) {
xBall = xBall + xMouse - xInitial;
yBall = yBall + yMouse - yInitial;
}
鼠标向上:
movingFlag = false;