Flex4 制作歌词同步
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)" width="576" height="420"><fx:Script><!private var bgImg:Class;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.timer) { lrc_txt.text=LRCarray.lyric; break; }lrc_txt.text=LRCarray.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=/\[:.\]/g; for (var i:int=0; i < listarray.length; i++) { var info:String=listarray;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;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; }]]></fx:Script><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --><s:Move target="{lrc_txt}" id="m"/></fx:Declarations><mx:Image source="{bgImg}" width="100%" height="100%"/><s:Label x="-1" y="11" id="lrc_txt"width="576" height="29" color="#FA0707" verticalAlign="middle" textAlign="center" fontFamily="宋体" fontWeight="bold" fontSize="14"/></s:Application>
页:
[1]