Web Audio API:停止播放所有预定的声音

时间:2017-04-17 15:14:04

标签: javascript web-audio web-audio-api

所以我有一堆加载的音频样本,我在下面的代码中调用了schedule函数:

let audio;

function playChannel() {
    let audioStart = context.currentTime;
    let next = 0;

    for(let i = 0; i < 8; i++) {
        scheduler(audioStart, next);
        next++;
    }
}

这是音频调度功能:

function scheduler(audioStart, index) {
    audio = context.createBufferSource(); 
    audio.buffer = audioSamples[index];  //array with all the loaded audio
    audio.connect(context.destination);  
    audio.start(audioStart + (audio.buffer.duration * index));
}

它工作正常并播放预定的声音。

我该如何停止/取消所有播放的预定声音?

因为现在当我尝试调用stop()方法时,它只会停止播放上次播放的声音。

1 个答案:

答案 0 :(得分:1)

您需要跟踪您在调度程序内创建的BufferSource节点,由index引用,然后运行所有这些节点。 E.g:

tableViews