/************************************************** * MKOnlinePlayer v2.0 * 歌词解析及滚动模块 * 编写:mengkun(http://mkblog.cn) * 时间:2017-3-16 *************************************************/ var lyricArea = $("#lyric"); // 歌词显示容器 // 歌曲加载完后的回调函数 // 参数:歌词源文件 function lyricCallback(str) { rem.lyric = parseLyric(str); // 解析获取到的歌词 lyricArea.html(''); // 清空歌词区域的内容 lyricArea.scrollLeft(0); // 滚动到顶部 // 显示全部歌词 for(var k in rem.lyric){ var txt = rem.lyric[k]; if(!txt) txt = " "; var li = $("
  • "+txt+"
  • "); lyricArea.append(li); } } // 强制刷新当前时间点的歌词 // 参数:当前播放时间(单位:秒) function refreshLyric(time) { time = parseInt(time); // 时间取整 var i = 0; for(var k in rem.lyric){ if(k >= time) break; i = k; // 记录上一句的 } scrollLyric(i); } // 滚动歌词 // 参数:当前播放时间(单位:秒) function scrollLyric(time) { time = parseInt(time); // 时间取整 if(rem.lyric === undefined || rem.lyric[time] === undefined) return false; // 当前时间点没有歌词 if(rem.lastLyric == time) return true; // 歌词没发生改变 var i = 0; // 获取当前歌词是在第几行 for(var k in rem.lyric){ if(k == time) break; i ++; } rem.lastLyric = time; // 记录方便下次使用 $(".lplaying").removeClass("lplaying"); lyricArea.children().eq(i).attr("class","lplaying"); // 加上正在播放样式 var scroll = (lyricArea.children().height() * i) - ($(".lyric").height() / 2); lyricArea.stop().animate({scrollTop: scroll}, 300); // 平滑滚动到当前歌词位置 } // 解析歌词 // 参数:原始歌词文件 function parseLyric(lrc) { var lyrics = lrc.split("\n"); var lrcObj = {}; for(var i=0;i