AS3对LRC歌词的解析
2010-01-10 上午 - AS相关 - as3 - lrc
MP3播放器的Demo完成已经一些日子,早想写下一点自己的心的,但是因为工作比较忙,所以耽误了,现在补上:
首先在读取LRC歌词文件的时候,很多人用AS3第一选择会是loader,但是会出现中文字符编码的问题,而为了避免这个问题的出现,选择URLStream是个不错的选择:
PLAIN TEXT
ACTIONSCRIPT:
public function loadLRC(url:String):void
{
= new URLStream();
(PLETE,plete);
var req:URLRequest = new URLRequest(url);
(req);
}
随后我们对数据读取结果进行处理
PLAIN TEXT
ACTIONSCRIPT:
private function plete(evt:Event):void
{
var temp:String =
(,”gb2132″);
(temp);
}
plete中首先对数据进行gb2132的编码转换,这样可以避免中文字符乱码的问题,heck这个方法则是处理数据的核心
PLAIN TEXT
ACTIONSCRIPT:
private function heck(lrcStr:String):void
{
();
var tempArr:Array = ('\r\n');
for(var i:int;i {
var tempStr:String = (“[","");
var tempA:Array = ("]“);
for(var j:uint=0;j {
var tempB:Array = tempA[j].split(“:”);
switch(tempB[0])
{
case “ti”:
= tempB[1];
break;
case “ar”:
= tempB[1];
break;
case “al”:
= tempB[1];
break;
case “by”:
= tempB[1];
break;
case “offset”:
break
default:
var tempTime:int = 0;
var obj:Object = new Object();
tempB[0] = tempB[0].replace(“[","");
tempTime += parseInt(tempB[0])*60000;
tempTime += tempB[1]*1000;
= tempTime;
= tempA[-1];
(obj);
break;
}
}
}
var _sort:Sort = new Sort();
= [new SortField("head")];
=_sort;
();
}
因为自己之前的设想是歌词存储到数组里面,由于程序采取单模式,即临时数据保存在model里面;
首先按照“\r\n”进行分割,然后去除数据中的"[
解析lrc及srt 来自淘豆网m.daumloan.com转载请标明出处.