如何在Phaser3中不设置forceSetTimeOut=True的情况下限制fps



如果我想将fps限制为30。我只能将forceSetTimeOut设置为True但它不如使用requestAnimationFrame和count消逝。

相位器3中是否有如下代码所示的功能?

let fps = 30
let fpsInterval = 1000 / fps
let fpsLast
let transport = undefined
function setFps() {
fpsLast = new Date().getTime()
}
function setScreen() {
canvas.width = ctxWidth;
canvas.height = ctxHeight;
}
function render() {
frameId = window.requestAnimationFrame(render)
let now = new Date().getTime()
let elapsed = now - fpsLast;
if (elapsed > fpsInterval) {
fpsLast = now - (elapsed % fpsInterval);
if(gameRunning){
main()
}
}
}

解决方案是,您可以使用update函数中的参数time(指向文档的链接(小心:update函数每秒会被调用约60次,但if子句内的代码不会。

如示例所示,您发布了

update (time, delta){
// 1000ms divided by 31, just to be on the save side
const timeNeededForAbout30Frame = 1000/31;
if ((time - this.lastRun) > timeNeededForAbout30Frame ){
this.lastRun = time;
// ... here comes the code 
}
}

信息:我宁愿使用fpsConfig(文档链接(,但由于使用此配置,目标fps不会被强制执行,只是一个"提示">这可能对你不起作用。

相关内容

最新更新