停止音频阵列循环

时间:2018-07-14 10:19:43

标签: javascript arrays break

我正在尝试构建鼓音序器,并从一个音频阵列开始,该音频阵列可以连续循环播放计数器。
我想通过双击停止音频,这是通过停止功能完成的。但是,在查看控制台时,计数器仍在增加。我曾尝试使用break来阻止这种情况,但被告知这是非法声明。

这是代码,感谢您的帮助。

const drumSequencer = [true, false, false, true, true, false, false, false];

const audio = document.getElementById('soundOne');


function start() {
    let counter = 0;
    setInterval(function(){ 
        if (drumSequencer[counter] === true) { 
        audio.play().catch(function(error) {
        console.log('error', error)
         })}
        console.log(counter);
        counter++;
        //loops through array
            if (counter === 8) {
                counter = 0;
            }
            //stops array if double click on screen
            if (document.addEventListener().dblclick) {
            break;
            }
    }, 1000);}



function stop() {
    audio.pause();
    audio.currentTime = 0;
}

//starts audio
document.addEventListener('click', start)

//stops audio
document.addEventListener('dblclick', stop)

1 个答案:

答案 0 :(得分:0)

const drumSequencer = [true, false, false, true, true, false, false, false];

const audio = document.getElementById('soundOne');
let stopped = false;
let counter = 0;

function restart(){
   counter = 0;
   stopped = false;
   start();
}

function start() {

    setTimeout(function(){ 
        if (drumSequencer[counter] === true) { 
        audio.play().catch(function(error) {
        console.log('error', error)
         })}
        console.log(counter);
        counter++;
        //loops through array
            if (counter === 8) {
                counter = 0;
            }
            //stops array if double click on screen
            if (stopped==false) {
              start();
            }
    }, 1000);}



function stop() {
    audio.pause();
    audio.currentTime = 0;
    stopped = true;
}

//starts audio
document.addEventListener('click', restart)

//stops audio
document.addEventListener('dblclick', stop)

我已经编辑了您的代码。请检查