- package{
- import flash.display.*;
- import flash.events.*;
- import flash.net.*;
- import flash.utils.*;
- import SingleLineLyrics;
- public class LyricsFormat /*extends EventDispatcher*/*/{
- private var path:String;
- private var AllLineLyrics:Array;
- //歌曲信息;
- public var title:String;
- public var autor:String;
- public var album:String;
- public var by:String;
- //事件类,我就不写了,
- public var onComplete:Function;
- /*
*接收一个路径上的lrc;
*/ - public function LyricsFormat(path:String){
- if(path==null){
- throw new Error("必须要有至少一个参数");
- }
- AllLineLyrics=new Array();
- var loader:URLLoader=new URLLoader();
- loader.dataFormat=URLLoaderDataFormat.TEXT;
- loader.addEventListener(Event.COMPLETE,completeHander);
- var request:URLRequest=new URLRequest();
- request.url=path;
- loader.load(request);
- }
- /*
*加载完成;
*/ - function completeHander(event:Event):void{
- var loader:URLLoader=URLLoader(event.target);
- bulid(loader.data)
- loader.removeEventListener(Event.COMPLETE,completeHander);
- }
- /*
*开始进行比对.存储;
*/ - function bulid(data:String){
- title=this.selectSingle(/\[ti:(.+)\]/i,data,"标题:");
- autor=this.selectSingle(/\[ar:(.+)\]/i,data,"歌手:");
- album=this.selectSingle(/\[al:(.+)\]/i,data,"专辑:");
- by=this.selectSingle(/\[by:(.+)\]/i,data,"制作:");
- trace([title,autor,album,by]);
- var RE:RegExp=/\n\[\d+:.+\][^\[\r\n]*/img;
- var Lyrics:Array=data.match(RE);
- for each(var i:String in Lyrics){
- var singleLineTime:String=this.selectSingle(/\[(.+)\].*/,i);
- var singleLineTimeArray:Array=singleLineTime.split("][");
- var singleLineText:String=this.selectSingle(/.+\](.*)/,i);
- for each(singleLineTime in singleLineTimeArray){
- var LineTimeArray:Array=singleLineTime.split(":");
- var lineTime:Number=Number(LineTimeArray[0])*60*1000+Number(LineTimeArray[1])*1000;
- AllLineLyrics.push(new SingleLineLyrics(lineTime,singleLineText));
- }
- }
- AllLineLyrics.sort(this.Equals);
- //触发;
- this.onComplete();
- }
- /*
*进行排序比较;
*/ - public function Equals(a,b){
- return SingleLineLyrics(a).Equals(b);
- }
- /*
*返回所需数组;
*/ - public function toArray():Array{
- return this.AllLineLyrics;
- }
- /*
*用正则选择单个所需内容;
*/ - function selectSingle(RE:RegExp,data:String,typeS:String=""):String{
- if(RE.test(data)){
- return typeS+""+RE.exec(data)[1];
- }
- //没有记录此项;
- return " ";
- }
- }
- }