2014-01-19 133 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毫秒的时间间隔。