点击时淡出音频音量?

时间:2014-01-19 01:22:20

标签: javascript jquery audio

任何人都可以告诉我我该怎么做,卷的回调就像这样

<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中制作一个按钮,逐渐点击链接淡出声音。 谢谢。

2 个答案:

答案 0 :(得分: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的音量。您可以根据需要更改值。

答案 1 :(得分: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毫秒触发一次,我们需要将淡入淡出速度从%/ s转换为十进制/ 100毫秒 所以:

%/s / 10 = %/100ms

然后

%/100ms / 100 = decimal/100ms

然后将此小数乘以当前音量,以获得每100 ms间隔减少的音量。