/* =================================================== * jqlyric.js v0.1 * shawnk@qq.com * 使用方法 * var $container=$('#lyriccontainer'); //用于显示歌词的容器对象,样式自己定义 * $container.jqlyric({ * lyric:'\ [ti:存在] \ [ar:汪峰] \ [al:存在] \ [by:Love] \ [00:00.00]汪峰 - 存在 \ [00:00.68]多少人走着却困在原地 \ [00:07.93]多少人活着却如同死去', // 歌词字符串,标准lrc文件格式 * speed:1000, // 歌词滚动间隔 (毫秒) * getPosition:function(){ // 获取当前播放位置的函数(返回秒数), 请定义外部函数,不指定本参数则默认从调用插件开始自动播放 * return position; * } * }); * =================================================== * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */ (function($) { var gtime=0; var lyric_listener; $.fn.jqlyric = function(options) { var opts = $.extend({}, $.fn.jqlyric.defaults, options); return this.each(function(){ var o = $.meta ? $.extend({}, opts, $this.data()) : opts; var $this=$(this); var arrLyric=new Array(); //放存汉字的歌词 var arrTime=new Array(); //存放时间 var currentLine=0; //当前活动的歌词行号 // 开始解析歌词 //将歌词解析成数组 var arrly=o.lyric.split('\r\n'); for(var i=0;i-1||str.indexOf('ar:')>-1||str.indexOf('al:')>-1||str.indexOf('by:')>-1){ // 歌曲特征字段 var tmp=str.substring(str.indexOf(':')+1); var text=tmp; //tag=tag.replace(/([ti|ar|al|by])/g,''); //arrLyric.push(tag+text); //arrTime.push(toSeconds('00:00:00')); // }else{ var text=arrly[i].substring(arrly[i].indexOf("]")+1); //if(text==''){text=' ';} arrLyric.push(text); //放歌词 arrTime.push(toSeconds(str)); //放时间 } } // 所有歌词按时间顺序排列 for(var k=0;karrTime[j+1]){ temp=arrTime[j]; arrTime[j]=arrTime[j+1]; arrTime[j+1]=temp; temp=arrLyric[j]; arrLyric[j]=arrLyric[j+1]; arrLyric[j+1]=temp; } } } var arrLyricObj=new Array(); for(var k=0;k=arrLyricObj[k].timeStart&&pos<=arrLyricObj[k].timeEnd){ if($("#line-current").attr("currentLine")!=k&&fadeFinish){ if(k>0){ $("#line-last span").fadeOut(1000,function(){ var lc=arrLyricObj[k-1].lrcContent.split("
"); $("#line-last span:eq(0)").text(lc[0]); if(lc.length>1){ $("#line-last span:eq(1)").text(lc[1]); } $("#line-last").attr("currentLine",k); $("#line-last span").fadeIn(1000,function(){ fadeFinish=true; }); }); } if(k"); $("#line-next span:eq(0)").text(lc[0]); if(lc.length>1){ $("#line-next span:eq(1)").text(lc[1]); } $("#line-next").attr("currentLine",k); $("#line-next span").fadeIn(1000,function(){ fadeFinish=true; }); }); } fadeFinish=false; $("#line-current span").fadeOut(1000,function(){ var lc=arrLyricObj[k].lrcContent.split("
"); $("#line-current span:eq(0)").text(lc[0]); if(lc.length>1){ $("#line-current span:eq(1)").text(lc[1]); } $("#line-current").attr("currentLine",k); $("#line-current span").fadeIn(1000,function(){ fadeFinish=true; }); }); break; } } } lyric_listener=setTimeout(timeFun,o.speed); }; lyric_listener=setTimeout(timeFun,o.speed); }); }; $.fn.jqlyric.defaults={ lyric:'[00:00.00]未找到歌词', // 歌词字符串 (lrc格式) speed:500, // 歌词进度一首歌间隔(毫秒) getPosition:function(){ // 获取播放器当前播放位置 gtime+=0.5; return gtime; } } function toSeconds(t){ //把形如:01:25的时间转化成秒; var m=t.substring(0,t.indexOf(":")); var s=t.substring(t.indexOf(":")+1); s=parseInt(s.replace(/\b(0+)/gi,"")); if(isNaN(s)) s=0; var totalt=parseInt(m)*60+s; //alert(parseInt(s.replace(/\b(0+)/gi,""))); if(isNaN(totalt)) return 0; return totalt; } })(jQuery); $(function() { var audio=document.getElementById("audio"); var fun_getPosition=function(){ return audio.currentTime; } var url=audio.currentSrc; var urlArr = url.split('?'); var k = urlArr[0], appU = k.split('/'); var srcFileExt = appU[appU.length - 1].split('.')[1]; url=url.replace("."+srcFileExt,".lrc"); var url = "http://122.114.50.251:8010/getJSON.php?callback=?&url="+(url); $.getJSON(url, function(data){ var lrcContent=data.data; if(!lrcContent||lrcContent==""){ return; } var $container=$('#lyriccontainer'); //用于显示歌词的容器对象,样式自己定义 $container.jqlyric({ lyric:lrcContent, // 歌词字符串,标准lrc文件格式 getPosition:fun_getPosition }); }); });