如何使用JavaScript计算鼠标特定的移动

时间:2013-02-17 19:13:23

标签: javascript jquery events mouse

我想知道如何计算鼠标特定的动作。

我想知道如何确定鼠标从A移动到B.

例如,像win8一样。当鼠标位于窗口侧面,然后将其放下时,会出现侧边栏。

$(window).on('mousemove' function(e){
   if(e.pageX is on area of or close to the side of window){
      // how can I calculate if the mouse Y is from a point to a point??
      if(Y is moved from A to B){
          //do something
      }
   }
})

2 个答案:

答案 0 :(得分:1)

您只需检查其宽度即可确定window的左侧:

if(e.pageX >= ($(window).width() - 20))

将检查鼠标是否在窗口右侧的20px范围内。

要检查移动的距离,您需要以某种方式记录最后的已知位置,然后进行比较。例如,您可能会这样做:

var last_pos = { x: false, y: false },
 coord_check = $(window).width() - 20; // or whatever value from the right you want to check.

$(window).on('mousemove' function(e) {

    if(e.pageX >= coord_check)
    {
        // If they're null, we can't do anything:
        if((last_pos.x !== false && last_pos.y !== false) && ((e.pageX - last_pos.x) > 20)) {
            // you can access the current position through e.pageX and e.pageY
            // last_post.x and last_pos.y will tell you the last known position
        }
    }

    // Now we need to update the last position:
    last_pos.x = e.pageX;
    last_pos.y = e.pageY;

});

答案 1 :(得分:1)

你应该有“区域”来控制,并在你的鼠标移动中跟踪最后和当前区域, 并且基于寄存器事件处理程序来处理场景,例如从A到B,从C到X,等等。 :)

这里有一个任务清单:

  • 创建具有x,y,宽度,高度和名称的区域对象数组
  • 在onmouse中移动检查当前区域是否与当前区域不同,然后将当前区域设置为当前区域,并将当前区域名称更改为当前区域名称。
  • 将变量事件设置为上一个+' - '+当前
  • 检查事件处理程序数组中是否有事件位置的数据,如果有任何函数则调用
希望它有所帮助!