flash中显示LRC歌词原理
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
ttp://www.Flashk.org/.....Sukii-o/mp3/ s2 music player支持LRC歌词显示,它得的地址: http://www.flashk.org/.....Sukii-o/mp3/ 由zas开发的s2 music player LRC歌词原理(由zas本人提供): //--接口-- function loadLRC(path) { delete this.onEnterFrame; lrcData.timer = new Array(); lrcData.info = new Array(); myCodePage = System.useCodepage; System.useCodepage = true; isLRCShow = false; mc_lrc.tx_lrc.HTMLText = " "; mc_lrc.tx_lrc.setTextFormat(lrcFormat); trace("LRC文件地址:"+path); lrcFile.load(path); mc_loadEvent.onEnterFrame = function() { if (lrcFile.getBytesLoaded()>10) { var per = Math.floor(lrcFile.getBytesLoaded()/lrcFile.getBytesTotal()*100); mc_lrc.tx_lrc.htmlText = " "+"正在下载歌词.."+per+"%"; } else { mc_lrc.tx_lrc.htmlText = " "+"正在查找歌词.."+""; } mc_lrc.tx_lrc.setTextFormat(lrcFormat); }; } // //读取LRC文本流 lrcFile = new XML(); lrcFile.onLoad = function(success) { if (success) { trace(true); myLRC = this.toString(); myLRC = myLRC.slice(myLRC.indexOf("[")); initLRC(); } else { trace("LRC LoadError"); mc_lrc.tx_lrc.htmlText = " "+"未加载歌词"+""; mc_lrc.tx_lrc.setTextFormat(lrcFormat); } delete mc_loadEvent.onEnterFrame; //编码恢复 if (myCodePage != undefined) { System.useCodepage = myCodePage; } else { System.useCodepage = false; } }; // //LRC解析器 myLRC = new String(); lrcData = new Object(); lrcData.timer = new Array(); lrcData.info = new Array(); lrcData.txScroll = new Array(); function initLRC() { i = 0; hasMoreTags = false; offset = 0; for (var k = 0; k<200; k++) { //LRC文本流分行 var cur = myLRC.indexOf("\n"); parseLineData(myLRC.slice(0, cur)); myLRC = myLRC.slice(cur+1); if (myLRC.length<=0) { break; } } if (hasMoreTags == true) { sortTimer(); } trace(lrcData.timer); startShowLRC(); } function parseLineData(lineString) { var lineData = new String(lineString); //解析[00:25.62]时间标签 var startCharID = lineData.indexOf("["); if (isNaN(lineData.slice(startCharID+1, startCharID+3)) == false && lineData.indexOf(":") == startCharID+3) { //标准[00:25.62]格式 if (lineData.indexOf("]") == startCharID+9) { lrcData.info[i] = lineData.slice(lineData.lastIndexOf("]")+1); lrcData.timer[i] = Number(lineData.slice(startCharID+1, startCharID+3))*60+Number(lineData.slice(startCharID+4, startCharID+6))+Number(lineData.slice(startCharID+7, startCharID+9)/100); } else if (lineData.indexOf("]") == startCharID+10) { //兼容[00:25.625]格式 lrcData.info[i] = lineData.slice(lineData.lastIndexOf("]")+1); lrcData.timer[i] = Number(lineData.slice(startCharID+1, startCharID+3))*60+Number(lineData.slice(startCharID+4, startCharID+6))+Number(lineData.slice(startCharID+7, startCharID+10)/1000); } else if (lineData.indexOf("]") == startCharID+8) { //兼容[00:25.6]格式 lrcData.info[i] = lineData.slice(lineData.lastIndexOf("]")+1); lrcData.timer[i] = Number(lineData.slice(startCharID+1, startCharID+3))*60+Number(lineData.slice(startCharID+4, startCharID+6))+Number(lineData.slice(startCharID+7, startCharID+8)/1 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于flash中显示LRC歌词原理的所有评论