обнаружить движение мыши при нажатии и обнаружить двойной щелчок - PullRequest
0 голосов
/ 11 января 2012

на данный момент я реализовал различные действия, когда человек нажимает на холст и когда человек что-то щелкает и перетаскивает. Я сделал это, привязав событие mousedown к своему холсту, и в этой функции есть разница между перетаскиванием или мышью. Это работает очень хорошо, но у меня есть проблема, когда я также хочу поддержать двойной щелчок на элементах.

Обычный способ реализовать это так:

$(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);

Я попытался объединить эти две вещи (распознавание перетаскивания и двойной клик), реализовав функцию drop, которая в течение некоторого времени ожидает прослушивания другого клика, и если этого не произошло в течение этого периода, он переходит к одиночному клику. функция. На данный момент это еще не распознает второй щелчок.

Я предполагаю, что существуют лучшие способы сделать это? Заранее спасибо

1 Ответ

1 голос
/ 11 января 2012

Возможно, вы захотите взглянуть на это:
http://threedubmedia.com/code/event/drag

Предоставляет вам дополнительные функции .drag() в дополнение к .click() и .dblclick().

Theres также дроп-версия:
http://threedubmedia.com/code/event/drop

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...