2016-07-16 2 views
-1

Вкратце: у меня есть звук для воспроизведения. При нажатии клавиши я хочу мгновенно погасить звук, как только нажимаю. Вся полученная информация затухает аудио с интервалом относительно продолжительности, например audio.duration - 2секунд. Тем не менее, я хочу постепенно исчезнуть.Угаснуть звук мгновенно

Чтобы развернуть: я задал еще один вопрос here, касающийся моей основной проблемы. Я попробовал подход audio.pause, но он дает мне поп-шум. Из моих исследований, я думаю, это звук «мгновенной установки громкости звука на 0». Вот почему я думал, что «угасание» будет обходным путем для достижения того, что я пытаюсь сделать.

+0

Должен ли '.puase()' вызываться, когда '.volume'' '0? – guest271314

+0

Да, это так. – senty

ответ

1

Учитывая звуковой элемент, вы можете попробовать что-то вроде этого:

var fadeInterval = setInterval(function(){ 
    if(audio.volume <= 0){ 
     clearInterval(fadeInterval); 
     return; 
    } 
    audio.volume -= 0.1; 
}, 2); 

Где audio является html5 элемент аудио.

Вы можете настроить задержку в миллисекундах, заменив 2 на любое значение, которое вы хотите.

Вы можете регулировать количество уменьшения путем замены 0.1 с любым значением, которое вы хотите, между 0 и 1.

Редактировать

ниже код должен быть более надежным

function fade(){ 
    if(audio.volume > 0){ 
     audio.volume -= 0.1; 
     setTimeout(fade, 2); 
    }else{ 
     audio.pause(); 
    } 
} 

Try it here

Смежные вопросы