на данный момент я реализовал различные действия, когда человек нажимает на холст и когда человек что-то щелкает и перетаскивает. Я сделал это, привязав событие 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, которая в течение некоторого времени ожидает прослушивания другого клика, и если этого не произошло в течение этого периода, он переходит к одиночному клику. функция. На данный момент это еще не распознает второй щелчок.
Я предполагаю, что существуют лучшие способы сделать это?
Заранее спасибо