function animate() {
var start = +new Date();
//其他的语句
var finish = +new Date();
//请问这里为什么要减去(finish-start)
setTimeout(animate, 1000 - (finish-start));
}
每一个动画本身也需要时间,这样做使得动画播放的周期正好是1秒,当然不可能很精确。
每个周期等于 定时器的周期+执行定时器的周期
其实没什么实际意义,这里没啥差别,除非中间有一堆其他逻辑
1.每个动画以1秒为单位执行;
2.finish-start -> 可以理解为一个动画从开始到结束的时间,从代码看,一般每个动画完成的时间会少于1秒;
3.为了在单位时间(1秒)内完成动画,那么就要进行延迟执行动画,延迟多长时间呢?那就是1秒减掉执行过程要耗费掉的时间,就是我要执行动画的时间。
总结: 延迟时间 + 动画执行时间 == 1秒