繁体   English   中英

检测单击时的鼠标移动并检测双击

[英]detect move of mouse while clicked and detect doubleclick

目前,我已经针对人单击画布以及人单击并拖动东西实施了不同的操作。 我是通过将mousedown事件绑定到画布来完成此操作的,在该函数中,拖动或mouseup之间存在区别。 这很好用,但是当我也想支持双击元素时我遇到了一个问题。

正常的实现方式是这样的:

$(canvas).click(function1);
$(canvas).dblclick(function2);

但是我没有采用这种方式,因为我必须检查鼠标是否移动(即拖动)。 这是我当前的实现:

var handler = {
    clicked:function(e){
       ...
       $(canvas).bind('mousemove', handler.dragged);
       $(window).bind('mouseup', handler.dropped);
    },
    dragged:function(e){
       ...
    },
    dropped:function(e){
      function loop(ctr){
         if (ctr < 50) {
           setTimeout(function(){loop(ctr+1)}, 2);
           } else {
           $(canvas).mousedown(handler.clicked);
           handler.singleClick(e);
          }
      }
      $(canvas).mousedown(handler.doubleclicked);
      loop(0);
     },
     doubleClick: function(e){
       ...
     },
     singleClick: function(e){
       ...

         }                
   }

$(canvas).mousedown(handler.clicked);

我试图通过实现放置功能来结合这两件事(对拖动和双击的识别),该功能需要等待一段时间才能听到另一声点击,如果在这段时间内没有发生,它将转到单点击功能。 目前尚无法识别第二次点击。

我认为有更好的方法可以做到这一点? 提前致谢

您可能要看一下:
http://threedubmedia.com/code/event/drag

除了.drag() .click().dblclick()之外,它还为您提供了其他功能.dblclick()

还有一个下降版本:
http://threedubmedia.com/code/event/drop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM