我正在通过SoundCloud制作音乐播放器。它有一个“播放/暂停”按钮和一个播放列表。默认情况下,“播放/暂停”按钮播放播放列表的第一首歌曲。但如果播放列表中的歌曲播放,那么它将是当前歌曲,“播放/暂停”按钮将根据该歌曲播放。我的问题是,当我选择一首歌时,它会开始播放但前一首歌并没有停止。除非我在点击另一首歌之前按“播放/暂停”按钮。
以下是代码:
var currentTrack = $("ul li").first().attr('id');
查找所点击项目的id值,以便此ID成为要播放的歌曲代码。
$(document).ready(function(){
$("ul").on('click','li',function(){
currentTrack = this.id;
console.log(currentTrack);
streamTrack(currentTrack);
});
});
如果当前歌曲正在播放按下按钮暂停,如果不播放(切换)。否则播放默认项目
var is_playing = false,
sound;
function player(){
if( sound ) {
if(is_playing) {
sound.pause();
is_playing = false;
} else {
sound.play();
is_playing = true;
console.log(already_played);
}
} else {
currentTrack = $("ul li").first().attr('id');
console.log(currentTrack);
streamTrack(currentTrack);
}
}
播放歌曲的方法。
var is_playing = true;
function streamTrack(myTrack){
SC.stream("/tracks/" + myTrack, function(obj){
//obj.stopAll();
obj.play();
sound = obj;
is_playing = true;
});
}
以下是在线演示:http://jsfiddle.net/danials/wZZ4D/10/
任何想法,如何停止播放所有歌曲并播放该歌曲?
答案 0 :(得分:0)
你不需要为它做一个完整的功能只需使sound
全局并暂停声音或停止声音不为空。
这样做:
var sound;
$(document).ready(function(){
$("ul").on('click','li',function(){
currentTrack = this.id;
console.log(currentTrack);
if(sound) // check if sound not null pause it
sound.pause();
streamTrack(currentTrack);
});
});