via*_*phy 4 html javascript audio html5-audio web-audio-api
所以我有一堆加载的音频样本,我在下面的代码中调用调度函数:
let audio;
function playChannel() {
let audioStart = context.currentTime;
let next = 0;
for(let i = 0; i < 8; i++) {
scheduler(audioStart, next);
next++;
}
}
Run Code Online (Sandbox Code Playgroud)
这是音频调度程序功能:
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));
}
Run Code Online (Sandbox Code Playgroud)
它工作正常并按预期播放预定的声音。
我该如何停止/取消所有预定的声音播放?
因为现在当我尝试调用该stop()方法时,它只会停止播放最后一个预定的声音。
您需要跟踪您在调度程序中创建的 BufferSource 节点(通过索引引用),然后运行所有节点。例如:
var sources = [];
function scheduler(audioStart, index) {
audio = context.createBufferSource();
sources[index] = audio;
audio.buffer = audioSamples[index]; //array with all the loaded audio
audio.connect(context.destination);
audio.start(audioStart + (audio.buffer.duration * index));
}
function stopAll() {
for(let i = 0; i < 8; i++)
if (sources[i])
sources[i].stop(0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |