音频元素正在播放音量:
audio.setVolume(.20)
Run Code Online (Sandbox Code Playgroud)
在某一点上,我想淡出音量,而不是突然切断,所以本质上我想要
audio.setVolume(.15)
audio.setVolume(.10)
audio.setVolume(.05)
audio.setVolume(.03)
audio.setVolume(.01)
Run Code Online (Sandbox Code Playgroud)
但是在这些变化之间需要有一些非常短暂的延迟,所以它们是可听的,我得到了淡出效果.这样做的正确方法是什么?
谢谢!
你可以使用setInterval():
// Initial volume of 0.20
// Make sure it's a multiple of 0.05
var vol = 0.20;
var interval = 200; // 200ms interval
var fadeout = setInterval(
function() {
// Reduce volume by 0.05 as long as it is above 0
// This works as long as you start with a multiple of 0.05!
if (vol > 0) {
vol -= 0.05;
audio.setVolume(vol);
}
else {
// Stop the setInterval when 0 is reached
clearInterval(fadeout);
}
}, interval);
Run Code Online (Sandbox Code Playgroud)
我会包装setTimeout函数的内部,以及选项.关于因子,0.01在不必知道或调整初始值的情况下,将是一个安全的减少值.
function fadeVolume(volume, callback)
{
var factor = 0.01,
speed = 50;
if (volume > factor)
{
setTimeout(function(){
fadeVolume((audio.volume -= factor), callback);
}, speed);
} else {
(typeof(callback) !== 'function') || callback();
}
}
fadeVolume(audio.volume, function(){
console.log('fade complete');
});
Run Code Online (Sandbox Code Playgroud)
淡入淡出完成后,它将触发一个可用于播放下一首歌曲的回调.
| 归档时间: |
|
| 查看次数: |
11369 次 |
| 最近记录: |