暂停时暂停淡入/淡出音乐?

时间:2016-01-25 16:42:57

标签: javascript php jquery html ajax

我有一个音乐剧本,但当我点击空间又称暂停按钮时,我希望它能暂停已经完成的音乐,但我希望它可以像淡入淡出一样淡入/淡出

这是我到目前为止的代码:

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);

1 个答案:

答案 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上返回它。否则你每次都会从静音到满音,这不是很灵活或用户友好。