Ответ 1
var isFinished = false;
var source = context.createBufferSource();
source.onended = onEnded;
function onEnded() {
isFinished = true;
console.log('playback finished');
}
Можно ли добавить прослушиватели событий к звукам веб-звука api? Я искал событие или триггер, когда звуки заканчиваются, но ничего не может найти. Вот как я предполагаю, что это сработает:
soundSource = context.createBufferSource();
soundBuffer = context.createBuffer(audioData, true);
soundSource.buffer = soundBuffer;
soundSource.connect(volumeNode);
soundSource.addEventListener('ended', function(e){
console.log("ended", "", e);
}, false);
soundSource.noteOn(context.currentTime);
var isFinished = false;
var source = context.createBufferSource();
source.onended = onEnded;
function onEnded() {
isFinished = true;
console.log('playback finished');
}
Не сегодня, нет. Я знаю, что были дискуссии о добавлении какой-то системы событий, но она еще не в спецификации (если она когда-либо будет). Однако в свойствах буфера есть свойство playbackState, которое вы можете проверить: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBufferSourceNode
Кроме того, лучше всего использовать таймауты на основе длины буфера и запускать обратный вызов при этом.
Да, похоже, что он был добавлен: AudioBufferSourceNode.onended https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/onended