更高性能的Javascript游戏?
到调用游戏循环的区块内,这将我的平均速率从12.56提高到56+。然而,在性能测试中,我的帧率仍然下降到13(最低)。(我不确定这是否是因为性能采样)更高性能的Javascript游戏?,javascript,game-engine,requestanimationframe,Javascript,Game Engine,Requestanimationframe,到调用游戏循环的区块内,这将我的平均速率从12.56提高到56+。然而,在性能测试中,我的帧率仍然下降到13(最低)。(我不确定这是否是因为性能采样) 如何实现更高性能的勾号代码以保持较高的最低帧速率?关于改进功能代码的问题更适合于感谢,我将在那里发布。与每次使用requestAnimationFrame时重新绑定不同,您可以在installLoops方法中将loop重新指定为绑定函数this.loop=this.loop.bind(this)。然后您可以只使用requestAnimationF
如何实现更高性能的勾号代码以保持较高的最低帧速率?关于改进功能代码的问题更适合于感谢,我将在那里发布。与每次使用
requestAnimationFrame
时重新绑定不同,您可以在installLoops
方法中将loop
重新指定为绑定函数this.loop=this.loop.bind(this)
。然后您可以只使用requestAnimationFrame(this.loop)
并避免生成新函数的开销。@jmoerdyk如果代码执行不足,被认为无法工作,那么在这里就更好了。
installLoops() {
window.requestAnimationFrame(this.loop.bind(this));
}
loop() {
this.now = Date.now();
var delta = this.now - this.last;
this.last = this.now;
this.dt = this.dt + delta;
if (this.dt < this.rate) {
window.requestAnimationFrame(this.loop.bind(this));
return;
} else {
this.game.loop();
this.draw();
this.dt = this.dt - this.rate;
this.game.loopKeyboardInput(this.key_pressed_map);
this.key_pressed_map = {};
}
window.requestAnimationFrame(this.loop.bind(this));
}
this.game.loopKeyboardInput(this.key_pressed_map);
this.key_pressed_map = {};