2014-02-07 41 views
0

我有一个HTML5音频背景音乐播放器,其中有一个按钮用于播放和暂停。它具有动画效果,因此在播放或暂停时音乐会淡入或淡出。另外我的页面中有2个标签,其中有一个是YouTube视频。所以我希望按下下一张幻灯片的按钮时淡出背景音乐。当再次按下幻灯片的按钮(回到没有视频的第一张幻灯片)时,音乐淡入并播放。按下一个制表符按钮时如何暂停(播放)背景音乐

这里是DEMO on JSFiddle

这是我的jQuery代码:

$('#go').on('click',function(evt){ 
    var active = $('.accordion:visible'); 
    var nextElement = active.next(); 
    active.hide(); 
    if(nextElement.hasClass("accordion")){ 
     nextElement.fadeIn(1000); 
    }else{ 
     $('.accordion:first').fadeIn(1000); 
    } 


}); 

//Music player 
var beepTwo = $("#musicBeat"); 
beepTwo[0].play(); 
$("#dan").click(function() { 
    if (beepTwo[0].paused == false) { 
     beepTwo[0].pause(); 
     beepTwo.animate({volume: 0}, 2000, 'swing', function() { 
      // really stop the music 

     }); 
     $(this).addClass("is-paused"); 
    } else { 
     beepTwo[0].play(); 
     beepTwo.animate({volume: 1}, 2000); 
     $(this).removeClass("is-paused"); 
    } 

}); 

回答

2

你去那里:

$('#go').on('click',function(evt){ 
    var active = $('.accordion:visible'); 
    var nextElement = active.next(); 

    active.hide(); 
    if(!nextElement.hasClass("accordion")){ 
     nextElement = $('.accordion:first'); 
    } 
    nextElement.fadeIn(1000); 

    if(nextElement.attr('id') == 'one') { 
     playBackgroundMusic(); 
    }else { 
     pauseBackgroundMusic(); 
    } 
}); 

function mute() { 
    muted = true; 
    pauseBackgroundMusic(); 
} 

function unmute() { 
    muted = false; 
    playBackgroundMusic(); 
} 

function pauseBackgroundMusic() { 
    if (beepTwo[0].paused == false) { 
     beepTwo.animate({volume: 0}, 2000, 'swing', function() { 
      // really stop the music 
      beepTwo[0].pause();   
     }); 
     $('#dan').addClass("is-paused"); 
    } 
} 

function playBackgroundMusic() { 
    // only play music if the player is not muted 
    if (beepTwo[0].paused == true && muted == false) { 
     beepTwo[0].play(); 
     beepTwo.animate({volume: 1}, 2000); 
     $('#dan').removeClass("is-paused"); 
    } 
} 

function toggleBackgroundMusic() { 
    if (muted) { 
     unmute(); 
    } else { 
     mute(); 
    } 
} 

$('#dan').click(toggleBackgroundMusic); 

//Music player 
var beepTwo = $("#musicBeat"); 
var muted = false; 
playBackgroundMusic(); 

脚本现在它看起来什么是否下一个开放手风琴选项卡的ID为“one”。在这种情况下,播放音乐。如果任何其他选项卡打开,则音乐暂停。 toggleBackgroundMusic()方法用于玩家切换。

如果您想要添加更多选项卡并播放/暂停音乐,只需编辑#go元素的onClick函数中的if子句即可。

的工作演示是: http://jsfiddle.net/4Trwc/4/

编辑: 并与新的静默功能: http://jsfiddle.net/4Trwc/6/

编辑-2: 淡出固定: http://jsfiddle.net/4Trwc/7/

+0

感谢您的帮助。只有一个问题。当音乐已经静音,然后你点击下一个按钮,它仍然静音,它很好,但是然后你再次按下按钮回到第一张幻灯片,音乐开始。哪个不应该。因为在他们走到另一张幻灯片之前,它并没有弹奏。我正在考虑在变量中添加一个if条件,如果正在播放音乐并且下一个按钮被按下,或者它不在播放,并且该按钮正在按下,则为true。你有什么想法吗? – Daniel

+0

那么,使用变量“静音”绝对是一个好方法。我认为具体的解决方案还取决于其他一些事情。用户是否应该能够使用YouTube视频取消静音和播放页面上的背景音乐? – croeck

+0

没有。那不重要。唯一的问题是如果音乐已经静音了,所以在重新打开第一张幻灯片后不得播放。如果正在播放,则必须暂停播放幻灯片,并在播放幻灯片时再播放。 – Daniel