#javascript #events #threshold #touchmove
#javascript #Мероприятия #пороговое значение #touchmove
Вопрос:
В этот момент мое устройство сенсорного ввода генерирует touchmove
событие (после touchstart
события) ПОСЛЕ перемещения нескольких пикселей (я думаю, это около 10 пикселей) Это означает, что при использовании этой техники для рисования пальцем на холсте первая часть кривой всегда представляет собой прямую линию длиной 10 пикселей. Я хочу touchmove
событие всего через 2 или 3 пикселя после touchstart
события. Есть ли какой-то порог, которым я могу манипулировать?
Комментарии:
1. Вызывается ли событие касания несколько раз в течение этих 10 пикселей? Если это так, вы можете просто использовать их для отслеживания движения.
2. Попробуйте добавить CSS
touch-action: pinch-zoom;
в свой холст. Это позволит пользователю увеличивать масштаб одним касанием двумя пальцами, но не панорамировать вид одним пальцем. В частности, это означает, что браузеру не нужно «ждать», чтобы различать различные типы касаний, и он может реагировать мгновенно. В качестве альтернативы, «обновите» свой код, чтобы использоватьpointer
события вместоtouch
.
Ответ №1:
Как только вы получаете touchstart
событие, добавьте прослушиватель, который записывает pointermove
события, сохраняя координаты события в массиве.
Затем, когда вы получите свое touchmove
событие, у вас будет история расположения указателя с момента touchstart
его получения.
Комментарии:
1. Спасибо, что указали мне на событие pointer. Я никогда не слышал об этом. Мне удалось переписать фрагмент кода, найденный здесь: developer.mozilla.org/en-US/docs/Web/API/Pointer_events /…
2. @StefanHesman Отлично. Этот инструмент, который я написал, может быть удобным, он отображает все события указателя (и MouseEvent ‘click’): тест Терри событий указателя