/************************************************** * MKOnlinePlayer v2.0 * 播放器主功能模块 * 编写:mengkun(http://mkblog.cn) * 时间:2017-3-16 *************************************************/ // 播放器功能配置 var mkPlayer = { api: "api.php", // api地址 wd: "陈奕迅", // 显示在搜索栏的搜索词 loadcount: 20, // 搜索结果一次加载多少条 defaultlist: 3, // 默认要显示的播放列表编号 autoplay: false, // 是否自动播放(true/false) *在手机端可能无法自动播放 volume: 0.6, // 默认音量值(0~1之间) debug: true // 是否开启调试模式(true/false) }; /******************************************************* * 以下内容是播放器核心文件,不建议进行修改,否则可能导致播放器无法正常使用! * * 哈哈,吓唬你的!想改就改呗!不过建议修改之前先【备份】,要不然改坏了弄不好了。 ******************************************************/ // 存储全局变量 var rem = []; // 音频错误处理函数 function audioErr() { // 没播放过,直接跳过 if(rem.playlist === undefined) return true; layer.msg('当前歌曲播放失败,自动播放下一首'); nextMusic(); } // 点击暂停按钮的事件 function pause() { if(rem.paused === false) { // 之前是播放状态 rem.audio.pause(); // 暂停 } else { // 第一次点播放 if(rem.playlist === undefined) { rem.playlist = rem.dislist; musicList[1].item = musicList[rem.playlist].item; // 更新正在播放列表中音乐 // 正在播放 列表项已发生变更,进行保存 playerSavedata('playing', musicList[1].item); // 保存正在播放列表 listClick(0); } rem.audio.play(); } } // 播放 function audioPlay() { rem.paused = false; // 更新状态(未暂停) refreshList(); // 刷新状态,显示播放的波浪 $(".btn-play").addClass("btn-state-paused"); // 恢复暂停 } // 暂停 function audioPause() { rem.paused = true; // 更新状态(已暂停) $(".list-playing").removeClass("list-playing"); // 移除其它的正在播放 $(".btn-play").removeClass("btn-state-paused"); // 取消暂停 } // 播放上一首歌 function prevMusic() { playList(rem.playid - 1); } // 播放下一首歌 function nextMusic() { playList(rem.playid + 1); } // 歌曲时间变动回调函数 function updateProgress(){ // 暂停状态不管 if(rem.paused !== false) return true; // 同步进度条 music_bar.goto(rem.audio.currentTime / rem.audio.duration); // 同步歌词显示 scrollLyric(rem.audio.currentTime); } // 显示的列表中的某一项点击后的处理函数 // 参数:歌曲在列表中的编号 function listClick(no) { // 记录要播放的歌曲的id var tmpid = no; // 调试信息输出 if(mkPlayer.debug) { console.log("点播了列表中的第 " + (no + 1) + " 首歌 " + musicList[rem.dislist].item[no].musicName); } // 搜索列表的歌曲要额外处理 if(rem.dislist === 0) { // 没播放过 if(rem.playlist === undefined) { rem.playlist = 1; // 设置播放列表为 正在播放 列表 rem.playid = musicList[1].item.length - 1; // 临时设置正在播放的曲目为 正在播放 列表的最后一首 } // 查找当前的播放列表中是否已经存在这首歌 for(var i=0; i= musicList[1].item.length) id = 0; if(id < 0) id = musicList[1].item.length - 1; // 记录正在播放的歌曲在正在播放列表中的 id rem.playid = id; // 如果链接为空,则 ajax 获取数据后再播放 if(musicList[1].item[id].mp3Url === null) { ajaxUrl(musicList[1].item[id], play); } else { play(musicList[1].item[id]); } } // 播放音乐 // 参数:要播放的音乐数组 function play(music) { // 调试信息输出 if(mkPlayer.debug) { console.log('开始播放 - ' + music.musicName + '\n' + 'musicName: "' + music.musicName + '",\n' + 'artistsName: "' + music.artistsName + '",\n' + 'albumName: "' + music.albumName + '",\n' + 'albumPic: "' + music.albumPic + '",\n' + 'musicId: ' + music.musicId + ',\n' + 'mp3Url: "' + music.mp3Url + '"'); } // 遇到错误播放下一首歌 if(music.mp3Url == "err") { audioErr(); // 调用错误处理函数 return false; } music_bar.goto(0); // 进度条强制归零 addHis(music); // 添加到播放历史 // 如果当前主界面显示的是播放历史,那么还需要刷新列表显示 if(rem.dislist == 2 && rem.playlist !== 2) { loadList(2); } else { refreshList(); // 更新列表显示 } changeCover(music.albumPic); // 更新封面展示 ajaxLyric(music.musicId, lyricCallback); // ajax加载歌词 $('audio').remove(); // 移除之前的audio var newaudio = $('