我有以下代码:
var gameStateRender = function (game) {
var t = new Date();
/* time passed since last frame */
game.timePassed = t.getTime() - game.timeFrameStart;
/* time when frame starts */
game.timeFrameStart = t.getTime();
/* time passed total */
game.timeTotal += game.timePassed;
game.update();
game.draw();
};
/* set the default game-state */
var gameState = gameStateRender;
我使用60 fpsrequestAnimFrame
的后备 ( ) 。setTimeout
window.requestAnimFrame = (function () {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / game.fps);
};
})();
(function gameloop () {
requestAnimFrame(gameloop);
gameState(game);
})();
游戏在 FF、IE9 中运行流畅,帧速率恒定为 ~60 fps。
在 chrome 中,游戏也有 ~60 fps,但会卡顿。一些事实:
当我在 chrome 中移动鼠标时,整个动画很流畅,当我停止移动鼠标时,动画开始结结巴巴。游戏总是有大约 60 fps(当我移动鼠标时,而当我不移动鼠标时)。
当我使用
console.log(...)
时,游戏运行流畅,没有在控制台上打印东西,游戏又卡顿了。(???)var gameStateRender = function (game) { var t = new Date(); /* time passed since last frame */ game.timePassed = t.getTime() - game.timeFrameStart; /* time when frame starts */ game.timeFrameStart = t.getTime(); /* time passed total */ game.timeTotal += game.timePassed; console.log(game.timeTotal); game.update(); game.draw(); };
当我运行上面的代码时,动画很流畅。事实上,我已经验证了游戏的帧速率始终为 ~60(每帧 16 毫秒)。
以前有没有人有过这种(奇怪的)行为?对我来说听起来很奇怪。