Один из способов, с помощью которого я решил эту проблему, заключается в следующем: я в основном закодировал решение «производитель / потребитель», где событие mousemove является производителем, а таймер - потребителем.Ниже для иллюстрации приведен ниже некоторый непроверенный код:
var pos = []
var old_pos = []
$(document).mousemove(function(e) {
pos = [e.pageX, e.pageY]
// do something else here?
});
setInterval(function(){
// do something with the fact that mouse has moved from old_pos to pos;
old_pos = [pos[0], pos[1]];
}, 100);
Лично я обнаружил, что даже если я установлю интервал времени в 10 миллисекунд, mousemove все равно будет срабатывать 3 раза при каждом срабатывании setInterval, поэтому он сохраняетзначительных вычислений, и 10 мс достаточно коротко для быстродействующего действия (1000 мс = 1 с, поэтому 10 мс = 100 кадров в секунду).