以下の作品:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){ window.setTimeout(callback, 1000 / 60); };
})();
function gameLoop() {
requestAnimFrame(gameLoop);
}
ただし、モジュール パターンを使用して機能をパッケージ化しようとすると、次のようになります。
var GameModule = {
requestAnimFrame: function() {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){ window.setTimeout(callback, 1000 / 60); };
},
gameLoop: function() {
this.requestAnimFrame(this.gameLoop);
}
};
// run the game
(function(){
Game.gameLoop();
})();
... requestAnimFrame を 1 回だけ呼び出します。私は長い間それをいじっていましたが、再帰的に動作させる方法を理解できないようです。