@germanberg

Как запретить выполнение function()?

Ранее был похожий вопрос, но решения так и не смог найти. Появилась другая мысль, возможно ли убить функцию на определенном этапе?
Например, если вызвали play_sound_1() как из под этой функции убить play_sound_2()?

function play_sound_1(){
var audio1 = new Audio ('audio/1.mp3'); 
audio1.autoplay = true;    
// отключить play_sound_2()
}

function play_sound_2(){
var audio2 = new Audio ('audio/2.mp3');
audio2.autoplay = true;  
// отключить play_sound_1()
}


Может быть возможно как то заменить функцию, на не существующую или как то замутировать звук у второй функции если вызвана первая. Блин, я всю голову сломал(
  • Вопрос задан
  • 99 просмотров
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
Хак с заменой
function play_sound_1(){
  var audio1 = new Audio ('audio/1.mp3'); 
  audio1.autoplay = true;    
  play_sound_2 = e => {};
}

function play_sound_2(){
  var audio2 = new Audio ('audio/2.mp3');
  audio2.autoplay = true;  
  play_sound_1 = e => {};
}
Внешняя переменная
var is_sound_played = 0;

function play_sound_1(){
  if (is_sound_played === 2) return;
  is_sound_played = 1;
  var audio1 = new Audio ('audio/1.mp3'); 
  audio1.autoplay = true;    
}

function play_sound_2(){
  if (is_sound_played === 1) return;
  is_sound_played = 2;
  var audio2 = new Audio ('audio/2.mp3');
  audio2.autoplay = true;  
}
Ответ написан
NeiroNx
@NeiroNx
Программист
Думаю чтобы работало: нужно где-то хранить объекты плеера звуков, чтобы их остановить.
var audio1,audio2;//объекты звуков
function stop_play(){
    if(audio1)audio1.stop();//отключаем первый звук если он был
    if(audio2)audio2.stop();//отключаем второй звук если он был
    audio1=undefined;
    audio2=undefined;
}
function play_sound_1(){
stop_play();
audio1 = new Audio ('audio/1.mp3'); 
audio1.autoplay = true;    
}

function play_sound_2(){
stop_play();
audio2 = new Audio ('audio/2.mp3');
audio2.autoplay = true;  
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы