我按如下方式设置游戏循环:
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
变量设置为良好的帧速率,那么我将在我的游戏中渲染一些特殊效果。如果没有,我将简单地跳过渲染那些特效。
但我明显的问题是如果dt>1/60
和effectsOn设置为true。我将渲染特效,这将导致渲染时间增加,从而使dt < 1/60
因此使effectOn变为false的可能性。
有没有什么好的替代方法可以实现我想做的事情?
在最糟糕的情况下,我可以在主菜单中设置一个复选框,让用户决定是否渲染特效...
答案 0 :(得分:2)
最初只留下特效。
如果在第一个n
帧之后平均渲染时间太长,请将其关闭,然后将其关闭。