Подтвердить что ты не робот

API веб-аудио, события?

Можно ли добавить прослушиватели событий к звукам веб-звука 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);
4b9b3361

Ответ 1

var isFinished = false;
var source = context.createBufferSource();
source.onended = onEnded;
function onEnded() {
    isFinished = true;
    console.log('playback finished');
}

Проверьте это

Ответ 2

Не сегодня, нет. Я знаю, что были дискуссии о добавлении какой-то системы событий, но она еще не в спецификации (если она когда-либо будет). Однако в свойствах буфера есть свойство playbackState, которое вы можете проверить: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBufferSourceNode

Кроме того, лучше всего использовать таймауты на основе длины буфера и запускать обратный вызов при этом.