Как воспроизвести аудиоклип один раз, даже если код должен вызывать его более одного раза?

Я создаю игру на JavaScript и хочу всплеск sound если игрок падает в воду (и умирает).

Однако, поскольку вода состоит из множества синих кубиков, звук в настоящее время повторяется для каждого "блока" воды, в который попадает игрок.

Есть ли способ заставить звук воспроизводиться только один раз, независимо от того, сколько водяных блоков игрок касается?

Я пытаюсь использовать for statement, но не повезло.

var count = 1;

for (var i = 0; i < count; i++){
    var splash = new Audio("splash.mp3");
     if ( type == "water"){
          splash.play();
     };
};

3 ответа

Пожалуйста, сначала исправьте ошибку цикла...

for (var i = 0; i < 1; i++){
    var splash = new Audio("splash.mp3");
        if ( type == "water"){
            splash.play();
        };
};

И дайте нам знать, если это решило вашу проблему?

Возможно, вам придется изменить класс Audio, или, в качестве альтернативы, вам придется отслеживать, когда он прекращает играть, чтобы вы могли изменить свой логический класс.

Так

if (!splash.isPlaying()) {
    splash.play();
}

Или же

if (!splashPlaying) {
    splashPlaying = true;
    splash.play()
}
 function isPlaying(audelem) { return !audelem.paused; }

 var count = 1;
 var splash = new Audio("splash.mp3");
 for (var i = 0; i < count; i++){ 
      if ( type == "water"&&!isPlaying(splash )){
           splash.play();
           break;
      };
 };

или же

 var count = 1;
 var splash = new Audio("splash.mp3");
 for (var i = 0; i < count; i++){ 
      if ( type == "water"&&audelem.paused){
           splash.play();
           break;
      };
 };

referene

Другие вопросы по тегам