Задать вопрос
@Nwton

Определить момент конца анимации?

Есть блок с анимацией. Анимация внутри класса (т.е. frame), поэтому, если вкладка неактивна, то браузер обновляет frame 2 раза в секунду, вместо 60. Поэтому, если повесить listener на animend, то он сработает гораздо позже, чем необходимо, если юзер в это время будет на другой вкладке.

Собственно, как решить эту проблему и вызвать callback ИЛИ когда анимация действительно закончится ИЛИ когда она должна была закончится?

Сначала попробовал прикрепить искусственный таймер с рекурсией, который доставал из класса animDuration и проверял, прошло ли необходимое время со старта анимации. Но тогда возникает проблема с тем, что браузер может дропнуть выполнение функции из-за большого колва вызовов.

Дальше я просто добавил setTimeout с 10ms. Но это тоже плохой выход, так как при неактивной вкладке, timeout будет вызывать гораздо реже, чем каждые 10ms.

Что можно сделать?
p.s. Вопрос принципиальный, т.к. приложение полу игровое и анимация яв. важной частью интерфейса.
  • Вопрос задан
  • 131 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы