Czy w HTML5 mogę odtwarzać ten sam dźwięk więcej niż raz w tym samym czasie?

Tworzę grę, w której często odtwarzane są dźwięki. Zauważyłem, że dźwięk nie będzie odtwarzany ponownie podczas odtwarzania. Na przykład gracz zderza się ze ścianą, odtwarzany jest dźwięk „uderzenia”. Ale jeśli gracz zderzy się z jedną ścianą, a następnie szybko zderzy się z inną ścianą, odtwarzany jest tylko jeden dźwięk „uderzenia” i uważam, że tak się dzieje, ponieważ pierwszy dźwięk nie został zakończony. Czy to prawda? Jak mam tego uniknąć? Myślałem o wstępnym załadowaniu dźwięku trzy razy, zawsze grając inną kopię tego dźwięku, ale to wydaje się raczej głupie ...

ROZWIĄZANY:

Okazuje się, że miałem rację ... Musisz wstępnie załadować wiele wersji dźwięku, a następnie odtwarzać je cyklicznie.

KOD:

<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>

questionAnswers(4)

yourAnswerToTheQuestion