private var LRCarray:Array=new Array(); private var sc:SoundChannel; private var timer:Timer; private var preLrc:String; private var curLrc:String; [Embed(source='1524407_1200x1000_0.jpg')] private var bgImg:Class; [Embed(source='chunwenyiaiqing.mp3')] private var QHC:Class; protected function application1_creationCompleteHandler(event:FlexEvent):void { System.useCodePage=true; lrc_txt.text="正在加载歌词..."; preLrc = "正在加载歌词..."; curLrc = "正在加载歌词..."; var loader:URLLoader=new URLLoader(); loader.load(new URLRequest("cwyan.lrc")); loader.addEventListener(Event.COMPLETE,LoadFinish); //LoadFinish(new Event(Event.COMPLETE)); var sound:Sound=new QHC(); sc=sound.play(); timer = new Timer(50); timer.addEventListener(TimerEvent.TIMER,SoundPlaying); timer.start(); m.duration = 500; m.yFrom = 300; m.yTo = 29; m.stop(); m.play(); } private function SoundPlaying(evt:Event):void { if(curLrc != preLrc){ var alpha:uint = Math.round(Math.random()*255); var red:uint = Math.round(Math.random()*255); var green:uint = Math.round(Math.random()*255); var blue:uint = Math.round(Math.random()*255); var c:uint = alpha << 24 | red << 16 | green << 8 | blue; lrc_txt.setStyle("color",c); m.duration = 800; m.yFrom = 300; m.yTo = 29; m.stop(); m.play(); preLrc = curLrc; } for (var i:int=1; i < LRCarray.length; i++) { if (sc.position < LRCarray[i].timer) { lrc_txt.text=LRCarray[i-1].lyric; break; } lrc_txt.text=LRCarray[LRCarray.length-1].lyric; } curLrc = lrc_txt.text;
} /** *解析lrc 文件内容成数组数据 */ private function LoadFinish(evt:Event):void { var list:String=evt.target.data; //var list:String=GeCi.lrcTxt; var listarray:Array=list.split("\n"); var reg:RegExp=/\[[0-5][0-9]:[0-5][0-9].[0-9][0-9]\]/g; for (var i:int=0; i < listarray.length; i++) { var info:String=listarray[i]; var len:int=info.match(reg).length; var timeAry:Array=info.match(reg); var lyric:String=info.substr(len*10); for (var k:int=0; k < timeAry.length; k++) { var obj:Object=new Object(); var ctime:String=timeAry[k]; var ntime:Number=Number(ctime.substr(1,2))*60+Number(ctime.substr(4,5)); obj.timer=ntime*1000; obj.lyric=lyric; LRCarray.push(obj); } } LRCarray.sort(compare); } /** *歌词顺序按播放时间排序 */ private function compare(paraA:Object,paraB:Object):int { if (paraA.timer > paraB.timer) { return 1; } if (paraA.timer < paraB.timer) { return -1; } return 0; }