Sık sık oynanan bir oyun yapıyorum. Oynatılırken bir sesin tekrar oynamadığını fark ettim. Örneğin, oyuncu bir duvarla çarpışır, bir "yumru" sesi çalınır. Oyuncunun bir duvar ile çarpışır ve ardından hızla başka bir duvara çarptığı Ama, eğer yalnızca bir "güm" sesi oynadım ve ilk ses bitiremedi bunu sağladığına inanıyoruz edilir. Bu doğru mu? Bundan nasıl kaçmalıyım? Hep o sesin farklı bir kopyasını oynayan Sesi üç kez önceden yükleme düşündüm ama buHTML5'te aynı sesi aynı anda birden fazla oynatabilir miyim?
ÇÖZÜLDÜ ... oldukça aptalca görünüyor:
I ... önceden yüklemek için sağ ihtiyaç olduğunu kapatır sesin birden çok sürümü ve daha sonra bunları dairesel olarak oynatın.
KODU:
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;
}
?
'sound = yeni Ses (" souce.wav "); sound.play(); ' – corazza