En HTML5, ¿puedo reproducir el mismo sonido más de una vez al mismo tiempo?

Estoy haciendo un juego, en el que a menudo se reproducen sonidos. Noté que un sonido no volverá a reproducirse mientras se está reproduciendo. Por ejemplo, el jugador colisiona con una pared, se reproduce un sonido de "golpe". Pero, si el jugador choca con una pared, y luego choca rápidamente con otra pared, solo se reproduce un sonido de "golpe", y creo que esto sucede porque el primer sonido no terminó. ¿Es eso cierto? ¿Cómo debo evitar esto? Pensé en precargar el sonido tres veces, siempre reproduciendo una copia diferente de ese sonido, pero esto parece bastante estúpido ...

Resuelto:

Resulta que tenía razón ... Necesitas precargar varias versiones del sonido y luego reproducirlas circularmente.

EL CÓDIGO:

<code>var ns = 3; //The number of sounds to preload. This depends on how often the sounds need to be played, but if too big it will probably cause lond loading times.
var sounds = []; //This will be a matrix of all the sounds

for (i = 0; i < ns; i ++) //We need to have ns different copies of each sound, hence:
    sounds.push([]);

for (i = 0; i < soundSources.length; i ++)
    for (j = 0; j < ns; j ++)
        sounds[j].push(new Audio(sources[i])); //Assuming that you hold your sound sauces in a "sources" array, for example ["bla.wav", "smile.dog" "scream.wav"] 

var playing = []; //This will be our play index, so we know which version has been played the last.

for (i = 0; i < soundSources.length; i ++)
    playing[i] = 0; 

playSound = function(id, vol) //id in the sounds[i] array., vol is a real number in the [0, 1] interval
{
    if (vol <= 1 && vol >= 0)
        sounds[playing[id]][id].volume = vol;
    else
        sounds[playing[id]][id].volume = 1;

    sounds[playing[id]][id].play();
    ++ playing[id]; //Each time a sound is played, increment this so the next time that sound needs to be played, we play a different version of it,

    if (playing[id] >= ns)
        playing[id] = 0;
}
</code>

Respuestas a la pregunta(4)

Su respuesta a la pregunta