11/08/17 17:47:19.15 YQYx4WBX
メインループ>>528ではこんな感じの実装にしてる。
呼び出しはHTMLから<body onLoad="main()"></body>で
function main() {
var fps = 60; //fps
var oldtime = Date.now();
var framenum = 0;
loop();
function loop() {
//処理
if (framenum > fps) framenum = 0;
newtime = Date.now();
if (framenum == 0) oldtime = Date.now();
framenum++;
targettime = Math.round(oldtime + framenum * (1000.0 / fps))
waittime = (targettime - newtime <= 0) ? 1 : targettime - newtime ;
setTimeout(main_routine, waittime);
}
}
予定時間に合うようにsetTimeoutの間隔を調整しながらループさせてる。