BenderIsGreat34
@BenderIsGreat34
junior front-end

Как повысить requestAnimationFrame?

Делаю игру на канвасе на нативном скрипте. Есть канвас, высотой 700пиксилей, сверху вниз летят кубики, время от времени скорость падения увеличивается. Если кубики монотонные, одного цвета, то играть можно нормально, но когда сделали дизайн для кубиков и по дизайну на кубиках нарисованы буквы, в глазах начинает рябить, у нормальных людей случает эпилепсия, а эпилептики получают свою годовую дозу.
Как можно решить вопрос рендеринга? Из вариантов сделать дизайн кубиков менее броским, но это самый плохой вариант. Возможно есть какая-то библиотека способная решить данную проблему? Возможно ли как-то повысить requestAnimationFrame, чтобы спрайты стали отчётливее видны? Возможно есть ещё варианты, о которых я не подумал?
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 2
hzzzzl
@hzzzzl
ну браузер будет пытаться вызвать эту функцию 60 раз в секунду, можно попробовать каждый второй раз ничего не делать, например

let shouldRender = false

function step() {
  shouldRender = !shouldRender

  if(!shouldRender) return  
  ..

}

window.requestAnimationFrame(step);
Ответ написан
Комментировать
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
В колбэк requestAnimationFrame первым аргументом приходит время в миллисекундах с дробной частью (как в результате performance.now)
меряйте сколько прошло времени после последней анимации, если меньше некоего порогового значения (подберите) - то просто планируем следующий requestAnimationFrame и ничего не рисуем
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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