Мой опыт:
лучше создать больше аудио-тегов HTML с тем же источником. Я фанат JS, но на этот раз лучше иметь HTML-теги аудио в формате HTML.
Я сделал дубликаты аудио тегов и украсил свои потребности. Если вы хотите воспроизводить один и тот же звук несколько раз в секунду, добавьте больше клонов.
также вы можете исправить ошибку автозапуска
(вместо EXE_JUST_ONE_TIME вы можете использовать событие переопределения клика, сейчас это не важно):
<audio controls id="LaserShot" >
<source src="LaserShot.mp3" type="audio/mpeg">
<source src="LaserShot.ogg" type="audio/ogg">
</audio>
<audio controls id="LaserShot_CLONE" >
<source src="LaserShot.mp3" type="audio/mpeg">
<source src="LaserShot.ogg" type="audio/ogg">
</audio>
<script>
var EXE_JUST_ONE_TIME = false;
document.addEventListener("click" , function(e) {
if (EXE_JUST_ONE_TIME == false){
EXE_JUST_ONE_TIME = true;
document.getElementById("LaserShot").play();
document.getElementById("LaserShot").pause();
document.getElementById("LaserShot_CLONE").play();
document.getElementById("LaserShot_CLONE").pause();
// Buffering in progress
// now you can play programmability from code
// One click or touch can prepare max 6 audios
}
}
Last part (need to be handled) this handler works only for one clone:
var play_shoot = function(){
if (document.getElementById('LaserShot').duration > 0 &&
!document.getElementById('LaserShot').paused) {
document.getElementById('LaserShot_CLONE').play();
} else {
document.getElementById('LaserShot').play();
}
}