2017-07-06 52 views
1

我想淡入一個MP3的音量到1如果身體有類fp-viewing-0 如何這不工作和音量doesn不會改變我該如何解決這個問題?如果人體有類似的淡入淡出的MP3聲音其他淡出

代碼:

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

我已經將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); 
} 
+0

謝謝!如果if條件會使音頻淡入淡出,那麼我會如何處理else語句,以便我可以將其他條件放在其他條件中以使音頻淡出? –

+0

@Neths我不確定我瞭解你的問題。如果在'body'中有'fp-viewing-0'類,最後一個塊中的這個'if'將會淡化音頻,否則它不會執行任何操作。它也有'volume = 0'。所以最終的結果是,如果課堂存在,它會使音頻淡化,否則你聽不到任何聲音。如果你刪除上面的'audio0.volume = 0',那麼如果類存在,它會消失,否則它會保持音頻播放。 – Isac