Я пытаюсь перетащить некоторые фигуры в холст HTML, но у меня возникла проблема с определением изменения координат мыши [dx, dy]
Прежде всего, нет проблем в самих координатах, хранящихся в mousePos
, так как эффекты переноса работают безупречно. Что я делаю, это при первом вводе формы, сохраняя координаты мыши.
pos = {x : mousePos[0] , y : mousePos[1]};
Затем onMotion обновляет координаты при каждом перемещении мыши, а также записывает текущую позицию
dx=mousePos[0]-pos.x;
dy=mousePos[1]-pos.y;
pos = {x : mousePos[0] , y : mousePos[1]};
Затем я добавляю значения dx и dy к координатам фигур (в качестве примера возьмем простой прямоугольник)
ctx.fillRect(0+this.dx,0+this.dy,100+this.dx,100+this.dy);
, пока мышь не движется слишком быстро, она работает относительно хорошо (хотя и не идеально). Если я перемещаю мышь очень быстро, не выходя из окна, прямоугольник не догоняет мышь. Я могу понять, есть ли задержка, чтобы догнать мышь, но как могут быть отключены значения дельты? Ясно, что мы знаем, с чего начали, и даже если в процессе пропускаются десятки / сотни пикселей, в конце концов мышь следует остановить и рассчитать правильные значения дельты.
Любая помощь будет принята с благодарностью, поскольку я наткнулся здесь на концептуальную стену.