⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lrc.js

📁 STCMS 音乐系统 v2.5 build 090501: 为达到最佳效果
💻 JS
字号:
///////////////////////////////////////////////////////////////////
// Author:daong | E-mail: dahongy@gmail.com
// Copyright &copy Http://www.phpstcms.cn
// This is not a free software, please to pay for more functions
// $Id: 2009-05-01 version V2.5 $
///////////////////////////////////////////////////////////////////
var LrcShow = {
  	gsh:"歌手:~1~\n曲名:~2~\n专辑:~3~\n编者:~4~",
  	inr:[],		//行
  	oTime:0,		//余补时间
  	hailang:false,
  	dts:-1,		//当前行显示的s
  	dte:-1,		//当前行显示的e
  	dlt:-1,		//当前行
 	ddh:false,		//当前行数据
  	fjh:false,
  	haohaiplay:{},
  	oceanx:0,
	lrcText:"",
	start:function(lrc,obj)
		{
		  if(lrc == "")
		  {
			var tt = "[00:01.00]STCMS MUSIC SYSTEM[00:03.00]HTTP://www.phpstcms.cn[00:05.00]STCMS 音乐系统 歌词正在加载中……";
		  }
		  else
		  {
			var tt = lrc;  
		  }
		  this.inr=Array();
		  obj = obj ? obj : "MPlayer";
		 this.print("正在加载中……");
		 $$("lrcwt1").innerText = "";
		 $$("lrcwt2").innerText = "";
		 $$("lrcwt3").innerText = "";
		 $$("lrcwt4").innerText = "";
		 $$("lrcwt5").innerText = "";
		 $$("lrcwt6").innerText = "";
		 $$("lrcwt7").innerText = "";
		 $$("lrcwt8").innerText = "";
		  this.haohaiplay = $$(obj);
		  if(/\[offset\:(\-?\d+)\]/i.test(tt))		//取offset余补时间
			this.oTime = RegExp.$1/1000;
		  tt = tt.replace(/\[\:\][^$\n]*(\n|$)/g,"$1");		//去掉注解
		  tt = tt.replace(/\[[^\[\]\:]*\]/g,"");
		  tt = tt.replace(/\[[^\[\]]*[^\[\]\d]+[^\[\]]*\:[^\[\]]*\]/g,"");
		  tt = tt.replace(/\[[^\[\]]*\:[^\[\]]*[^\[\]\d\.]+[^\[\]]*\]/g,"");
		  tt = tt.replace(/<[^<>]*[^<>\d]+[^<>]*\:[^<>]*>/g,"");
		  tt = tt.replace(/<[^<>]*\:[^<>]*[^<>\d\.]+[^<>]*>/g,"");		//去掉除时间标签的其它标签
		
		  while(/\[[^\[\]]+\:[^\[\]]+\]/.test(tt))
		  {
			tt = tt.replace(/((\[[^\[\]]+\:[^\[\]]+\])+[^\[\r\n]*)[^\[]*/,"\n");
			var zzzt = RegExp.$1;
			/^(.+\])([^\]]*)$/.exec(zzzt);
			var ltxt = RegExp.$2;
			var eft = RegExp.$1.slice(1,-1).split("][");
			for(var ii=0; ii<eft.length; ii++)
			{
			  var sf = eft[ii].split(":");
			  var tse = parseInt(sf[0],10) * 60 + parseFloat(sf[1]);
			  var sso = { t:[] , w:[] , n:ltxt }
			  sso.t[0] = tse-this.oTime;
			  this.inr[this.inr.length] = sso;
			}
		  }
		  this.inr = this.inr.sort( function(a,b){return a.t[0]-b.t[0];} );
		
		  for(var ii=0; ii<this.inr.length; ii++)
		  {
			while(/<[^<>]+\:[^<>]+>/.test(this.inr[ii].n))
			{
			  this.inr[ii].n = this.inr[ii].n.replace(/<(\d+)\:([\d\.]+)>/,"%=%");
			  var tse = parseInt(RegExp.$1,10) * 60 + parseFloat(RegExp.$2);
			  this.inr[ii].t[this.inr[ii].t.length] = tse-this.oTime;
			}
			$$("lrcbc").innerHTML = "<font>"+ this.inr[ii].n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/%=%/g,"</font><font>") +" </font>";
			var fall = $$("lrcbc").getElementsByTagName("font");
			for(var wi=0; wi<fall.length; wi++)
			  this.inr[ii].w[this.inr[ii].w.length] = fall[wi].offsetWidth;
			this.inr[ii].n = $$("lrcbc").innerText;
		  }
			this.lrcText == "";
			for(var i=0; i<this.inr.length; i++)
			{
				this.lrcText += this.retxt(i)+"<br>";
			}
			this.lrcText = this.lrcText ? this.lrcText : lrc;
		  if(this.inr)
		  {
		  	setInterval("LrcShow.run();",10);
		  }
		  else
		  {
			  this.lrcText = lrc.replace("\n","<br>");
			  this.lrcText = this.lrcText.replace("\r","<br>");
			  this.lrcText = this.lrcText.replace(" ","&nbsp;");
			  this.showTxt();
		  }
		},
	run:function()
		{
			if(!this.haohaiplay)
			{
				return false;
			}
			if(this.oceanx==0)
			{
				this.running(this.haohaiplay.controls.currentPosition, this.haohaiplay.currentMedia.duration);
			}
			else
			{
				this.running(this.haohaiplay.GetPosition()/1000, this.haohaiplay.GetLength()/1000);
			}
		},
	running:function(tme, plen)
		{
			  if(tme<this.dts || tme>=this.dte)
			  {
				var ii;
				for(ii=this.inr.length-1; ii>=0 && this.inr[ii].t[0]>tme; ii--){}
				if(ii<0) return;
				this.ddh = this.inr[ii].t;
				this.fjh = this.inr[ii].w;
				this.dts = this.inr[ii].t[0];
				this.dte = (ii<this.inr.length-1)?this.inr[ii+1].t[0]:plen;
			
				$$("lrcwt1").innerText = this.retxt(ii-4);
				$$("lrcwt2").innerText = this.retxt(ii-3);
				$$("lrcwt3").innerText = this.retxt(ii-2);
				$$("lrcwt4").innerText = this.retxt(ii-1);
				$$("lrcwt5").innerText = this.retxt(ii+1);
				$$("lrcwt6").innerText = this.retxt(ii+2);
				$$("lrcwt7").innerText = this.retxt(ii+3);
				$$("lrcwt8").innerText = this.retxt(ii+4);
				this.print(this.retxt(ii));
				if(this.dlt==ii-1)
				{
				  clearTimeout(this.hailang);
				  this.golrcoll(0);
				}
				this.dlt = ii;
			  }
			  var bbw = 0;
			  var ki;
			  for(ki=0; ki<this.ddh.length && this.ddh[ki]<=tme; ki++)
				bbw += this.fjh[ki];
			  var kt = ki-1;
			  var sc = ((ki<this.ddh.length)?this.ddh[ki]:this.dte) - this.ddh[kt];
			  var tc = tme - this.ddh[kt];
			  bbw -= this.fjh[kt] - tc / sc * this.fjh[kt];
			  if(bbw>$$("lrcbox").offsetWidth)
				bbw = $$("lrcbox").offsetWidth;
			  $$("lrcbc").style.width = Math.round(bbw);
		},
		retxt:function(i)
			{
				return (i<0 || i>=this.inr.length)?"":this.inr[i].n;
			},
		print:function(txt)
			{
				$$("lrcbox").innerText = txt;
				$$("lrcbc").innerText = txt;
			},
		golrcoll:function(s)
			{
			  $$("lrcoll").style.top = 25-(s++)*3;
			  $$("lrcwt1").filters.alpha.opacity = 90-s*18;
			  $$("lrcwt5").filters.alpha.opacity = s*18+10;
			  if(s<=5)
				this.hailang = setTimeout("LrcShow.golrcoll("+s+")",120);
			},
		showTxt:function()
			{
				$$("lrc_show_text").innerHTML = this.lrcText;
			},
		showMoive:function()
			{
				$$("lrc_show_text").innerHTML = "";
			}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -