JQuery 开源播放器 JPlayer
最近在一网盘项目里烦恼着播放器的问题,经过千辛万苦终于找到一个合适的了,一个Open Source的JS播放器,可以适应多浏览器,太兴奋了,急于与大家分享一下:
地址:http://www.happyworm.com/jquery/jplayer/download.htm
网盘地址:http://u.115.com
下图是播放器的图片,有兴趣的朋友可以上去溜一溜。如果对于网盘里面的JS代码有不明白的地方, 可以随时来发贴。

下面本人所写的一个JPlayer 代理类,大家也可以参考一下:
1

var player_proxy = function()
{2
var _datalist = []; //音乐列表3
var _btn_obj; //按钮对象4
var _show_state = -1; //-1:没有音乐 0:正在播入 1:暂停中 2:已停止5
var _progress_change;6
var _player;7
var _play_index = -1; //播放序号8
var _volume = 50; //默认音量9
var _play_handler;10
var _is_no_sound = false;11
var _play_pattern = 2; //播放模式 0:单曲循环; 1:顺序; 2:循环; 3:随机12
var _data_change_handler; //单乐数据改变事件13
14
//根据序号播放歌曲15

var play_index = function(index)
{16

if(_datalist.length > 0)
{17
var url = _datalist[index]["filepath"];18
_player.changeAndPlay(url);19
_play_index = index;20

if(_play_handler)
{21
_play_handler(_datalist[index]);22
}23
}24
}25

26
//播放第一首27

var play_first = function()
{28

if(_datalist.length > 0)
{29
play_index(0);30
}31
}32
33
//播放下一首34

var play_next = function()
{35
var n = get_play_index_num();36

if(n < _datalist.length)
{37
play_index(n);38
}39

else
{40
play_index(0);41
}42
}43
44
//播放上一首45

var play_previous = function()
{46
var n = get_play_index_num(true);47

if(n >= 0)
{48
play_index(n);49
}50
}51
52

var show_play_btn = function()
{53
$("#" + _btn_obj["play"]).hide();54
$("#" + _btn_obj["pause"]).show();55
$("#" + _btn_obj["stop"]).show();56
}57
58

var show_pause_btn = function()
{59
$("#" + _btn_obj["play"]).show();60
$("#" + _btn_obj["pause"]).hide();61
$("#" + _btn_obj["stop"]).show();62
}63
64

var show_stop_btn = function()
{65
$("#" + _btn_obj["play"]).show();66
$("#" + _btn_obj["pause"]).hide();67
}68
69
//验证Key是否存在70

var check_key = function(key)
{71

for(var i = 0; i < _datalist.length;i++)
{72
var item = _datalist[i];73

if(item.key == key)
{74
return true;75
}76
}77
return false;78
}79
80

var get_play_index_num = function(is_pre)
{81
var i = _play_index;82

if(is_pre)
{83

switch(_play_pattern)
{84
case 0:85
break;86
case 1:87
i-=1;88
break;89
case 2:90
i-=1;91

if(i < 0)
{92
i = 0;93
}94
play_index(i);95
break;96
case 3:97
i = parseInt(Math.random()*(_datalist.length-1));98
break;99
}100
}101

else
{102

switch(_play_pattern)
{103
case 0:104
break;105
case 1:106
i+=1;107
break;108
case 2:109
i+=1;110

if(i >= _datalist.length)
{111
i = 0;112
}113
play_index(i);114
break;115
case 3:116
i = parseInt(Math.random()*(_datalist.length-1));117
break;118
}119
}120
return i;121
}122
123
//控制静音状态124

this.control_sound = function(p_has)
{125

if(p_has == undefined)
{126
return _is_no_sound;127
}128
_is_no_sound = p_has;129

if(_is_no_sound)
{130
_player.volume(0);131

}else
{132
_player.volume(_volume);133
}134
},135
//播放进度事件136

this.on_progress_change = function(fun)
{137

if(_progress_change)
{138

_progress_change = function()
{139
_progress_change();140
fun();141
}142
}143

else
{144
_progress_change = fun;145
}146
},147
//获得正在播放歌曲对象148

this.get_active_music = function()
{149

if(_play_index != -1 && _datalist.length > 0)
{150
return _datalist[_play_index];151
}152
return null;153
},154
//播放155

this.play = function(p_key)
{156

for(var i = 0; i < _datalist.length; i++)
{157

if(p_key == _datalist[i].key)
{158
play_index(i);159
}160
}161
},162

this.play_first_music = function()
{163
play_first();164
},165
//增加歌曲166

this.add_data = function(p_key,p_name,p_filepath)
{167

var obj =
{key:p_key,filepath:p_filepath,name:p_name};168
var result_obj = [];169
var is_add = false;170

if(!check_key(obj.key))
{171
_datalist.push(obj);172
result_obj.push(obj);173
is_add = true;174
}175

if(_data_change_handler)
{176
_data_change_handler(is_add,result_obj);177
}178
},179
//增加歌曲(批量)180

this.add_dataarr = function(p_obj_arr)
{181
var is_add = false;182
var result_obj = [];183

for(var i = 0; i < p_obj_arr.length; i++)
{184

if(!check_key(p_obj_arr[i].key))
{185
_datalist.push(p_obj_arr[i]);186
result_obj.push(p_obj_arr[i]);187
is_add = true;188
}189
}190

if(_data_change_handler)
{191
_data_change_handler(is_add,result_obj);192
}193
return is_add;194
},195
//删除歌曲196

this.delete_data = function(p_key)
{197
var index = -1;198

for(var i = 0; i < _datalist.length;i++)
{199
var item = _datalist[i];200

if(item.key == p_key)
{201
index = i;202
}203
}204
var key = -1;205

if(index != -1)
{206
key = _datalist[index].key;207

if(_data_change_handler)
{208

_data_change_handler(true,[
{key:key}],true);209
}210
_datalist.splice(index,1);211
}212

else
{213

if(_data_change_handler)
{214

_data_change_handler(false,
{key:key},true);215
}216
}217
},218
//绑定按钮219

this.bind_btn = function(obj)
{220

if(obj)
{221
_btn_obj = obj;222

$.each(_btn_obj, function(i, n)
{223
var ele = $("#" + n);224

if(ele == undefined)
{225
ele = $(n);226
}227

ele.click(function()
{228

switch(i)
{229
case "play": //播放230
_player.play();231
show_play_btn();232
break;233
case "pause": //暂停234
_player.pause();235
show_pause_btn();236
break;237
case "stop": //停止238
_player.stop();239
show_stop_btn()240
break;241
case "pre": //前一首242
play_previous();243
show_play_btn();244
break;245
case "next": //下一首246
play_next();247
show_play_btn();248
break;249
}250
});251
}); 252
}253
},254
//设置音量255

this.set_volume = function(p_num)
{256

if(p_num == undefined)
{257
return _volume;258
}259
_volume = p_num;260
_player.volume(_is_no_sound? 0 : _volume);261
},262
//设置进度263

this.set_plan = function(p_num)
{264
_player.playHead(p_num);265
},266
//播放事件267

this.set_play_call_back = function(p_fun)
{268
_play_handler = p_fun;269
},270
//设置列表改变事件271

this.set_data_change_handler = function(p_fun)
{272

if(p_fun)
{273
_data_change_handler = p_fun;274
}275
},276
//设置播放模式277

this.pattern = function(p_pattern)
{278

if(p_pattern == undefined)
{279
return _play_pattern;280
}281
_play_pattern = p_pattern;282
},283
//获取列表284

this.get_datasource = function()
{285
return _datalist;286
},287

this.get_player = function()
{288
return _player;289
},290
//初始化291

this.init = function(p_playId,p_play_callback)
{292
_player = $("#" + p_playId);293

if(p_play_callback)
{294
_play_handler = p_play_callback;295
}296

if(_progress_change)
{297
_player.onProgressChange(_progress_change);298
}299

_player.onSoundComplete(function()
{300
var i = get_play_index_num();301
play_index(i);302
});303

_player.jPlayer(
{304

ready: function ()
{305

if(_play_index == -1)
{306
play_first();307
show_play_btn();308
}309

else
{310
show_stop_btn();311
}312
},313
swfPath: "xxxxx" //这里是jplayer falsh所在目录314
});315
}316
} 使用方法可以上去115网盘的播放器参考一下,有this在前面是公开的方法,使用过JS的朋友,如何是创建与使用一个类就不用再提了吧。
一个人能够走多远,取决于与谁同行

浙公网安备 33010602011771号