Показать сообщение отдельно
  #4 (permalink)  
Старый 28.01.2021, 03:56
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

Пожалуйста, подскажите вдогонку один вопрос на ту же тему...

Сделал все на Pointer-events, все стало классно работать, но есть одна неувязка.

Чтобы маскировать системные евенты мобильника (зум и скроллинг), надо выставлять в канвасе touch-action: none; но это, понятно дело не удобно.

Если это не делать, то мобильник через, буквально десятую долю секунды, забирает управление и движение не получается.

У меня движение сделано так

при PointerDown я начинаю движение,
пока нет PointerUp или PointerLeave, я кручу молекулу.

Если не делать touch-action: none; то кручение заканчивается буквально за десятую долю секунды, так как происходит PointerLeave, хотя я не отрываю пальца от экрана, просто мобильник перехватывает управление и начинает скролить.

Я попробовал при PointerDown менять класс в канвасе с touch-action: none; но это не срабатывает.

Я заметил, что когда мобильник перехватывает управление, то он дает PointerLeave и я решил, что на него я не буду выключать touch-action: none; в touch-action: auto;

Такой режим работает существенно интуитивнее, но, все равно, как-то криво.

Понятно можно сделать кнопку, что де - включи кручение, но это вроде совсем как-то не красиво.

Скажите, пожалуйста, можно ли по первому евенту PointerDown как-то так гарантированно поменять класс у канваса с touch-action: auto; на touch-action: none; чтобы мобильник не перехватил свое управление пока я ему не разрешу?

PS: пример, лежит там же, в сорсах эти евенты на 2075-ой строчке.

Спасибо!!!
Ответить с цитированием