注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

Flex4 实现LRC 歌词同步播放音乐  

2011-06-05 01:41:42|  分类: flex |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

<?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>
  <![CDATA[
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.media.Sound;
   import flash.media.SoundChannel;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.system.System;
   
   import mx.events.EffectEvent;
   import mx.events.FlexEvent;
   
   private var LRCarray:Array=new Array();
   private var sc:SoundChannel;
   private var timer:Timer;
   private var preLrc:String;
   private var curLrc:String;
   [Embed(source='bg.jpg')]
   private var bgImg:Class;
   [Embed(source='qhc.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("qhc.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;
   }

  ]]>
 </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>

  评论这张
 
阅读(628)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017