如何以一定间隔(例如每秒一次)播放声音,逐渐减少间隔之间的时间?
目前,我使用setInterval的两个间隔,第一个每秒播放声音,第二个setInterval每20秒加速第一个间隔。这有效,但它留下了令人讨厌的"暂停"间隔期间。
有更好的方法吗?
示例代码(只是为了澄清,没有必要阅读):
var audio = new Audio('track.wav');
var baseSpeed = 1000;
var myInt;
var changeInt;
//Starts a Run
function beatInterval() {
audio.play();
};
//Speeds up the other interval
function speedUpInterval() {
baseSpeed = baseSpeed - 20
clearInterval(myInt);
myInt = setInterval(beatInterval, baseSpeed);
console.log(baseSpeed);
myInt = setInterval(beatInterval, baseSpeed);
changeInt = setInterval(speedUpInterval, 20000);
答案 0 :(得分:3)
您可以延迟调整速度,直到实际执行间隔功能:
var speedChanged = false;
function beatInterval() {
if(speedChanged) {
speedChanged = false;
clearInterval(myInt);
myInt = setInterval(beatInterval, baseSpeed);
}
audio.play();
};
function speedUpInterval() {
baseSpeed = baseSpeed - 20
speedChanged = true;
console.log(baseSpeed);
}