使用定时器的时候,用setInterval(),即使传入的是个变量,也不会让间隔时间会改变,当定时器调用是变量的值就是永远的值了,变量变化后不会对定时器的间隔时间造成影响。
这个问题就只有使用setTimeout()配合递归来解决
// 创建激光:由于要不断增加激光创建的速度,所以不能用setInterval(),只能使用递归setTimeout() function creatLaser(){ setTimeout(function(){ var L=new Laser(); L.create(); laser.push(L); creatLaser(); //递归 },createLaserTime); }
不断的调用自身,当变量变化时就能立即反映到时间间隔上,也可以通过恒定时间来模拟setInterval()