function gameLoop() {
window.requestAnimFrame(gameLoop);
var now = Date.now();
deltaTime = now - lastTime;
lastTime = now;
fillCanvas();
drawGirl();
drawStars();
aliveUpdate();
}
这个方法一开始就执行了计时器,而计时器是执行gameloop方法,相当于一个新的gameloop方法,那为什么还会执行计时器后面的部分?还有这里的计时器为什么不需要每次执行方法前清除呢?
你把requestAnimFrame视作setTimeOut(funcname, time)就行,是个异步执行的。只不过requestAnimFrame可以自己选择最佳延迟间隔时间(与屏幕刷新时机同步)而已。