我有一个音乐剧本,但当我点击空间又称暂停按钮时,我希望它能暂停已经完成的音乐,但我希望它可以像淡入淡出一样淡入/淡出
这是我到目前为止的代码:
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);
答案 0 :(得分:2)
我不认为本机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间隔是我们调用此函数的OFTEN的方式。因此,超时和音量变化越小,声音越淡“平滑”。 小心不要让这两个间隔混淆。他们都做不同的事情。
编辑:您可能想要跟踪启动fadeOut时的音量,这样,您可以在fadeIn上返回它。否则你每次都会从静音到满音,这不是很灵活或用户友好。