У меня есть следующий JS-код для игры на холсте.Воспроизведение аудио через JS с перекрытием
var EXPLOSION = "sounds/explosion.wav";
function playSound(str, vol) {
var snd = new Audio();
snd.src = str;
snd.volume = vol;
snd.play();
}
function createExplosion() {
playSound(EXPLOSION, 0.5);
}
Это работает, однако он отправляет запрос сервера для загрузки звукового файла каждый раз, когда он вызывается. С другой стороны, если я объявляю аудиообъект заранее:
var snd = new Audio();
snd.src = EXPLOSION;
snd.volume = 0.5;
function createExplosion() {
snd.play();
}
Это работает, однако, если функция createExplosion вызывается перед тем, звук закончил играть, он не воспроизводит звук вообще. Это означает, что за один раз допускается только один прогон звукового файла - и в сценариях, которые происходят с несколькими взрывами, он вообще не работает.
Есть ли способ правильно воспроизвести аудиофайл, который несколько раз перекрывается с самим собой?
Законченное происходит с использованием библиотеки AudioFX: HTTP: // codeincomplete .com/posts/2011/9/17/revisiting_html5_audio/ –