2010-12-14 11 views
11

Estoy implementando efectos de sonido en audio HTML5 pero después de un tiempo, simplemente deja de reproducir el audio. El tipo de archivo es correcto porque comienza bien pero parece que se rinde.Reproducciones de audio HTML5 al azar

var sound = new Audio(url); 
function play() {   
    sound.play(); 
} 

¿Hay una manera mejor de hacer esto para que reproduzca de manera uniforme el sonido?

Aquí hay un enlace a mi implementación. Fácil de reproducir presionando la barra espaciadora mucho hasta que finalmente se da por vencido (también disparar las luces para obtener más sonidos). http://craftyjs.com/elevatoraction/

Esto ocurre por mí en la última versión de Chrome (8,0)

Editar: Hice lo que sugiere Gaurav y sólo jugó la misma instancia de cada archivo de sonido, pero el mismo tipo de problemas están presentes . Dejará de jugar arbitrariamente.

Edición 2: Acabo de notar que cada vez que intento reproducir el sonido, la networkState es siempre 1 que según this significa que tiene no está completamente cargado. Eso es extraño ya que todavía juega a veces e incluso cuando se juega la networkState es siempre 1

+1

Debe especificar qué versión del navegador (s) y la versión (s) del sistema operativo que ha reproducido el problema sucesivamente. –

Respuesta

6

No crear un nuevo objeto de audio cada vez que se desea reproducir un sonido, vuelva a utilizar el mismo recurso.

var sound1 = new Audio(url); 
function playSound1() { 
    sound1.play(); 
} 

creo que esto está relacionado con el error http://code.google.com/p/chromium/issues/detail?id=57070

+0

Oh, es un error. Sin embargo, ¿cómo podría reproducir los mismos sonidos al mismo tiempo? – Louis

+0

Bueno, entonces tienes que usar múltiples objetos de audio. Y tendrá que administrarlos para que cree el número mínimo que realmente necesita. Hasta que se solucione el error, de todos modos. – Gaurav

+0

Suena bien. ¿Eso significa que tengo que crear alrededor de 2 o 3 objetos de audio de cada archivo y verificar cuáles están jugando? Me resulta difícil obtener una buena documentación para ser honesto. – Louis