我设置我的游戏循环如下:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
(function gameLoop() {
var time = new Date().getTime();
var dt = (time - prevFTime) / 1000.0;
prevFTime = time;
state.effectsOn = dt > 1 / 60.0 ? true : false;
state.effectsOn = false;
//game rendering logic goes here
window.requestAnimFrame(gameLoop);
})();
现在我想要做的是,如果这个effectsOn
变量被设置为良好的帧率,那么我将在我的游戏中渲染一些特殊效果。如果没有,我将直接跳过渲染那些特殊效果。
但我明显的问题是 ifdt>1/60
和 effectsOn 设置为 true。我将渲染特殊效果,这将导致渲染时间增加,因此有可能dt < 1/60
使 effectsOn 变为 false。
有没有什么好的替代方法来实现我想要做的事情?
在最坏的情况下,我可以在我的主菜单中放置一个复选框之类的东西,让用户决定是否渲染特殊效果......