如果身体有类淡入MP3声音,否则淡出

时间:2017-07-06 16:20:06

标签: javascript jquery jquery-animate html5-audio

如果正文具有类fp-viewing-0,我试图将mp3的音量淡化为1 如果这不起作用,音量不会改变我如何解决这个问题?

代码:

var audio0 = document.getElementById('audio-0');
audio0.volume = 0;

setInterval( function(){
          if ($("body").hasClass("fp-viewing-0")) {
             audio0.animate({volume: 1}, 1000);
            }

else {
   audio0.animate({volume: 0}, 1000);
            }

 }, 100);

HTML

<audio id="audio-0"  src="1.mp3" autoplay="autoplay"></audio>

我也试过了:

$("#audio-0").prop("volume", 0);


setInterval( function(){
          if ($("body").hasClass("fp-viewing-0")) {
            $("#audio-0").animate({volume: 1}, 3000);
            }

else {
   $("#audio-0").animate({volume: 0}, 3000);
            }

 }, 100);

亲切的问候!

1 个答案:

答案 0 :(得分:1)

我已将jquery动画部分更改为手工制作的淡入淡出。为此我创建了一个淡入淡出时间和步数来操纵淡入淡出效果。

var audio0 = document.getElementById('audio-0');
audio0.volume = 0;

if ($("body").hasClass("fp-viewing-0")) {
     audio0.volume = 1; //max volume
     var fadeTime = 1500; //in milliseconds 
     var steps = 150; //increasing makes the fade smoother
     var stepTime = fadeTime/steps;
     var audioDecrement = audio0.volume/steps;

     var timer = setInterval(function(){
         audio0.volume -= audioDecrement; //fading out

         if (audio0.volume <= 0.03){ //if its already inaudible stop it
              audio0.volume = 0;
              clearInterval(timer); //clearing the timer so that it doesn't keep getting called
         }
     }, stepTime);
}

最好将所有这些放在一个接收这些值的函数中,相应地淡化,以便它有条理:

function fadeAudio(audio, fadeTime, steps){ 
    audio.volume = 1; //max 
    steps = steps || 150; //turning steps into an optional parameter that defaults to 150
    var stepTime = fadeTime/steps;
    var audioDecrement = audio.volume/steps;

    var timer = setInterval(function(){
        audio.volume -= audioDecrement;

        if (audio.volume <= 0.03){ //if its already inaudible stop it
             audio.volume = 0;
             clearInterval(timer);
        }
    }, stepTime);
}

这将使您的代码更紧凑和可读:

var audio0 = document.getElementById('audio-0');
audio0.volume = 0;
if ($("body").hasClass("fp-viewing-0")) {
    fadeAudio(audio0, 1500);
}