>我有一个音乐脚本,但是当我点击空格(又名暂停按钮)时,我希望它暂停它已经做的音乐,但我希望它像spotify一样淡入/淡出
这是我到目前为止的代码:
var play = true;
var myAudio = document.getElementById("music");
function onKeyDown(event) {
switch (event.keyCode) {
case 32: //SpaceBar
if (play) {
myAudio.pause();
play = false;
} else {
myAudio.play();
play = true;
}
break;
}
return false;
}
window.addEventListener("keydown", onKeyDown, false);
我认为这在本机API中是不可能的。但是,您绝对可以创建一个可以执行此操作的帮助程序函数。您可以访问音量控件,因此您可以执行以下操作:
function fadeOut(song) {
if (song.volume === 0) {
play = false;
// Pause the song so it doesn't keep playing in the background
song.pause();
return;
}
// Set your fadeout interval here
song.volume -= someInterval;
// Return this function after some interval, and pass it the same song
return setTimeout(fadeOut, 100, song);
// Change the timeout interval for faster / slower fades
// Reverse this for a fade in effect
}
当您减小音量时,这是每次调用此函数时音量下降的数量,这是毫无价值的。setTimeout 间隔是我们调用此函数的频率。因此,超时越快,音量变化越小,淡出听起来就越"平滑"。只是要注意不要混淆这两个间隔。他们都做不同的事情。
编辑:您可能希望跟踪开始淡出时的音量,这样,您就可以在淡入时返回它。否则,您每次都会从静音到最大音量,这不是非常灵活或用户友好。