如何从指定偏移量计算鼠标移动距离

时间:2013-11-08 15:20:41

标签: javascript jquery mouseevent offset mousemove

我有一些问题。我需要计算从mousedown事件到mouseup的一些鼠标移动像素。所以我有这个代码:

selectArea.on({
    mousedown : function(e) {
        select = true;
    },
    mousemove : function(e) {
        var x2, y2, offset = $(this).offset();
            x2 = e.pageX - offset.left,
            y2 = e.pageY - offset.top,
            width = ?,
            height = ?
        ...
    },
    mouseup : function() {
        select = false;
    }
});

现在我需要知道有多少像素我将鼠标从mousedown偏移移动到mouseup偏移量,是否有任何可行的计算方法?很多需要帮助。

1 个答案:

答案 0 :(得分:2)

根据您对“我移动了多少像素”的定义,有两种不同的解决方案

场景:鼠标向右移动25px,向左移动75px。

解决方案1:50px; (开始和结束之间的距离)

在mousedown处理程序中,您可以保存鼠标的坐标。在mouseup处理程序中,您可以计算当前鼠标坐标与保存的鼠标坐标之间的差异。

解决方案2:100px; (行走距离)

在mousedown处理程序中,您设置一个布尔值以指示您正在记录并保存鼠标的坐标并使用0初始化距离。在mousemove处理程序中,您可以计算当前鼠标坐标与保存坐标之间的差异(添加它到距离)然后用你当前的鼠标坐标覆盖保存的坐标。在mouseup处理程序中输出距离并取消设置布尔值。

您的代码似乎是第二个解决方案,但问题是第一个。