使用JS

时间:2017-04-30 14:18:07

标签: javascript

如何以一定间隔(例如每秒一次)播放声音,逐渐减少间隔之间的时间

目前,我使用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);

1 个答案:

答案 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);
}