2014-10-28 3 views
2

Я пытаюсь воспроизвести звуковой эффект, когда пользователь нажимает кнопку в моем веб-приложении.Воспроизведение нескольких звуковых эффектов одного снимка одновременно в мобильных браузерах?

я впервые попробовал этот метод:

var sound = new Audio("soundeffect.ogg"); 
function clickHandler(){ 
    sound.play(); 
} 

Однако, если пользователь нажимает на кнопку два раза подряд, звук только играл один раз. Я предполагал, что это потому, что звук не закончил играть, и поэтому он не перемотан.

Тогда я пробовал это решение.

var sound = new Audio("soundeffect.ogg"); 
function clickHandler(){ 
    sound.currentTime = 0; 
    sound.play(); 
} 

Однако это приводит к отключению первого звука до следующего воспроизведения.

Затем я попробовал эту версию, которая создает новый звуковой эффект каждый раз, когда нажата кнопка:

function clickHandler(){ 
    var sound = new Audio("soundeffect.ogg"); 
    sound.play(); 
} 

Это отлично работает на моей девелоперской машине, но с помощью Android Chrome на мобильных данных, звуковой эффект кажется каждый раз, когда нажимается кнопка, происходит задержка в несколько секунд до воспроизведения звука.

Я надеялся объявить звуковой эффект в глобальном масштабе, а затем клонирование может помочь сохранить его в кеше, но он, похоже, не помог.

var sound = new Audio("soundeffect.ogg"); 
function clickHandler(){ 
    var oneShotSound = sound.cloneNode(); 
    oneShotSound.play(); 
} 

ответ

3

Я написал веб-аудио-библиотеку Wad.js, которая, я думаю, поможет вам в этом случае.

var sound = new Wad({ source : 'soundeffect.ogg' }); 

sound.play(); 

Wad.js создаст новый узел исходный буфер Audio каждый раз, когда вы называете play(), так что вы можете услышать несколько экземпляров одного и того же звука, но все эти узлы источника буфера аудио используют один и тот же звуковой буфер, который экономит много вычислительной работы.

Проверьте это. https://github.com/rserota/wad

Тем не менее, совместимость с несколькими браузерами не идеальна. Я ожидаю, что он будет работать в хром для Android, но я его не тестировал.

+0

Спасибо! очень полезно! – helderk

Смежные вопросы