Как запустить функцию на определенном FPS внутри игрового цикла requestAnimationFrame? - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю игру с javascript и pixi js. Gameloop работает на requestAnimationFrame() и в основном достигает 60fps:

function gameLoop(){
  animations();
  update();
  window.requestAnimationFrame(gameLoop);
}
gameLoop();

Моя update функция имеет всю игровую логику, которая отлично работает при 60fps / requestAnimationFrame, но я хочу, чтобы функция анимации работала с фиксированными 24fps.

Я знаю, что мог бы зациклить animations() отдельно, вне функции gameloop

setInterval(function(){
   animations();
},1000/24);

Но я не уверен, что для производительности хорошо иметь одновременно два отдельных цикла (не так ли). Есть ли способ запустить animations() с фиксированными 24 кадрами в секунду внутри gameloop(), который работает на requestAnimationFrame?

А вот общее представление о том, как работает мой класс анимации, если он имеет значение:

function Animation(texture, numOfFrames, loop){
    this.frame = 0;
    this.fullTexture = texture;
    this.numOfFrames = numOfFrames;
    this.loop = loop;
    this.play = function(){
       this.frame++;
       this.texture = this.fullTexture.textures[this.frame+'.png'];
       if(this.frame==this.numOfFrames && this.loop){
          this.frame = 0;
       } else if(this.frame>this.numOfFrames){
          this.frame = this.numOfFrames;
       }
   }
}
...