2014-01-19 132 views
0

誰能告訴我我怎麼能做到這一點,音量回調是這樣點擊時淡出音頻音量?

<a href='#' onClick="api_setVolume(players[0],0); return false;">Set volume (0%, mute)</a>

<a href='#' onClick="api_setVolume(players[0],0.5); return false;">Set volume (50%)</a>

<a href='#' onClick="api_setVolume(players[0],1); return false;">Set volume (100%)</a>

,我需要在jQuery的一個按鈕,當逐漸點擊一個鏈接淡出的聲音。 謝謝。

+0

您可以使用滑塊 – 2014-01-19 01:25:37

+0

滑塊嗎?你怎麼看? – user3211183

+0

也許HTML 5範圍輸入。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input – 2014-01-19 01:32:17

回答

0
<script> 
function fadeOut(callback) { 
    var volume = 1; 
    var fade = setInterval(function() { 
     api_setVolume(players[0], volume); 
     volume -= .1; 

     if (volume === 0) { 
      clearInterval(fade); 
      if (typeof callback === 'function') { 
       callback(); 
      } 
     } 
    }, 1000); 
} 

function myCallback() { 
    // do Something 
} 
</script> 

<a href='javascript:void(0)' onClick="fadeOut(myCallback);">Fade Out</a> 

這是未經測試,但應該工作。它會每1秒將音量減少0.1。您可以根據需要更改這些值。

+0

這對我有用,謝謝你,但是如果你幫助我多一件小事,我需要讓它迴歸,因爲當接下來的聲音逐漸消失,但下一首歌沒有聽到任何聲音:S。 – user3211183

+0

用音量達到0時觸發的回調更新了答案 –

0

下面是一個函數,它將需要減小音量的播放器和以%/ s(即百分比/秒)爲單位的淡入淡出速度作爲參數。在這個函數中,我假設api_getVolume(player)是你正在使用的API中的一個函數。

<script> 
function fadeOut(player, fadeSpeed) { 
    var curVolume = api_getVolume(player), 
     reductionAmount = curVolume * (fadeSpeed/1000); 
    var fadeInterval = setInterval(function() { 
     var newVolume = curVolume - reductionAmount; 
     if (newVolume < 0) { 
      return clearInterval(fadeInterval); 
     } 
     api_setVolume(player, newVolume); 
     curVolume = newVolume; 
    }, 100); 
} 
</script> 

<!--Example button usage with fade speed of 50%/s (so the fade lasts 2 seconds)--> 
<button onclick="fadeOut(player[0], 50);">Next</button> 


下面是我的數學計算reductionAmount的解釋:

由於間隔爲每100毫秒發射,我們需要將褪色速度從%/秒轉換爲十進制/ 100毫秒。
所以:

%/s/10 = %/100ms

然後

%/100ms/100 = decimal/100ms

此小數然後由當前體積相乘以獲得體積的量被減少爲在每100毫秒的時間間隔。