Я создаю игру с 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;
}
}
}