这里播放的歌曲是我的JS:jPlayer不是播放列表对象中的全局声明
$(document).ready(function(){
var cssSelector = {
jPlayer: "#jplayer_N",
cssSelectorAncestor: "#jp_container_N"
};
var playlist = [];
var options = {
playlistOptions: {
enableRemoveControls: true,
autoPlay: true
},
swfPath: "js/jPlayer",
supplied: "webmv, ogv, m4v, oga, mp3",
smoothPlayBar: true,
keyEnabled: true,
audioFullScreen: false
};
var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);
function loadSong(){
var song_artist = findArtist();
var song_title = findTitle();
var song_poster = findPoster();
myPlaylist.add({
title: song_title,
artist: song_artist,
oga: sessionStorage.getItem("file_url"),
poster: song_poster
});
$(document).on($.jPlayer.event.pause, myPlaylist.cssSelector.jPlayer, function(){
$('.musicbar').removeClass('animate');
$('.jp-play-me').removeClass('active');
$('.jp-play-me').parent('li').removeClass('active');
});
$(document).on($.jPlayer.event.play, myPlaylist.cssSelector.jPlayer, function(){
$('.musicbar').addClass('animate');
});
$(document).on('click', '.jp-play-me', function(e){
e && e.preventDefault();
var $this = $(e.target);
if (!$this.is('a')) $this = $this.closest('a');
$('.jp-play-me').not($this).removeClass('active');
$('.jp-play-me').parent('li').not($this.parent('li')).removeClass('active');
$this.toggleClass('active');
$this.parent('li').toggleClass('active');
if(!$this.hasClass('active')){
myPlaylist.pause();
}else{
var i = Math.floor(Math.random() * (1 + 7 - 1));
myPlaylist.play(i);
}
});
}
});
在调用LoadSong来(),我可以看到我的歌曲的myPlaylist.playlist数组中得到排队。但是,jPlayer不会播放我的歌曲。
而且,在某种程度上,这似乎却为我工作:
$(document).ready(function(){
var cssSelector = {
jPlayer: "#jplayer_N",
cssSelectorAncestor: "#jp_container_N"
};
var playlist = [];
var options = {
playlistOptions: {
enableRemoveControls: true,
autoPlay: true
},
swfPath: "js/jPlayer",
supplied: "webmv, ogv, m4v, oga, mp3",
smoothPlayBar: true,
keyEnabled: true,
audioFullScreen: false
};
function loadSong(){
var song_artist = findArtist();
var song_title = findTitle();
var song_poster = findPoster();
var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);
myPlaylist.add({
title: song_title,
artist: song_artist,
oga: sessionStorage.getItem("file_url"),
poster: song_poster
});
$(document).on($.jPlayer.event.pause, myPlaylist.cssSelector.jPlayer, function(){
$('.musicbar').removeClass('animate');
$('.jp-play-me').removeClass('active');
$('.jp-play-me').parent('li').removeClass('active');
});
$(document).on($.jPlayer.event.play, myPlaylist.cssSelector.jPlayer, function(){
$('.musicbar').addClass('animate');
});
$(document).on('click', '.jp-play-me', function(e){
e && e.preventDefault();
var $this = $(e.target);
if (!$this.is('a')) $this = $this.closest('a');
$('.jp-play-me').not($this).removeClass('active');
$('.jp-play-me').parent('li').not($this.parent('li')).removeClass('active');
$this.toggleClass('active');
$this.parent('li').toggleClass('active');
if(!$this.hasClass('active')){
myPlaylist.pause();
}else{
var i = Math.floor(Math.random() * (1 + 7 - 1));
myPlaylist.play(i);
}
});
}
});
但是,每次我打电话LoadSong来()函数的时候,我不能使用这是什么原因,一个新的myPlaylist对象获得创造每一次,让我一次只播放一首歌曲。正如我试图生成播放列表,我想要一个静态/全局(不完全知道该怎么称呼它)myPlaylist对象的实例,使用它我将歌曲添加到播放列表。按照this我不应该有任何问题。另外,为了确保myPlaylist的范围,我也尝试过creating static properties and methods和this,但这也没有任何帮助。我只是无法弄清楚什么是错误的,离开一个具体的解决方案。
任何人都可以请指出我要去哪里错了,在这种情况下可以做些什么?