如何使setInterval逐渐增加速度,例如从1000毫秒开始,然后在几秒钟内逐渐减少到40毫秒,每次1毫秒。
有什么想法吗?
这是我的代码:
setTimeout(function() {bonustimer = setInterval(function() { handleTimer2(rushcount); }, 40);}, 1000);
handleTimer2 = function() {
if(rushcount === -1) {
clearInterval(bonustimer);
} else {
$('.digit-wrapper').html(rushcount);
rushcount--;
}}
答案 0 :(得分:1)
设置间隔可能不是你想要的,因为你最终会杀死它并在每次迭代时重做它。使用setTimeout更容易,可能是这样的:
(function () {
var interval = 1001;
timer = function() {
--interval;
//do your thing here
if (interval >= 40) {
setTimeout(timer, interval);
}
};
timer();
})();
另请注意,如果您一次只将间隔减少一毫秒,从1000减少到40,则需要相当长的时间才能完成所有这些迭代。您可以随时使用其他公式替换--interval
,例如interval = interval*0.9;
(每次迭代减少10%)或任何您想要的公式。
答案 1 :(得分:0)
我猜@OldGeeksGuide的代码只是在 间隔 达到40时才停止。需要一点改进;)
from ffmpy import FFmpeg
ff = FFmpeg(inputs={'video.avi': None, 'voice.wav': None}, outputs={'output.ts': '-c:v h264 -c:a ac3'})
ff.cmd
'ffmpeg -i voice.wave -i video.avi -c:v h264 -c:a ac3 output.ts'
ff.run()
然后您可能需要用一些 if 条件包装 setTimeout 来停止此循环;)