flash实现歌词同步

代码很早就写好了,现在才发布出来。那时想弄一个FLASH音乐播放器,放在QQ空间里,音乐播放部份比较简单,很快就完成了,但歌词同步部份没有一点头绪,所以就上网搜索了一下,发现关于FLASH歌词同步的文章少之又少,开头一大堆无聊话,代码只给出了一小部份,根本无法正确运行,所以我只好自己写一个歌词同步功能了,这里给出全部源码。

关于歌曲播放部份就不说了,重点讲一下歌词同步。


先看看LRC歌词

[ti:海阔天空]
[ar:BEYOND]
[al:乐与怒 ]
[by:水天一色]
[00:03.59]海阔天空
[00:09.47]歌手:BETYOND(主唱:黄家驹)
[00:16.90]专辑:乐与怒
[00:17.83]今天我
[00:21.65]寒夜里看雪飘过
[00:25.03]怀着冷却了的心窝飘远方
[00:31.47]风雨里追赶
[00:34.46]雾里分不清影踪
[00:37.72]天空海阔你与我
[00:40.03]可会变(谁没在变)
[00:44.79]多少次
[00:46.78]迎着冷眼与嘲笑
[00:50.28]从没有放弃过心中的理想
[00:56.03]一刹那恍惚
[00:59.21]若有所失的感觉
[01:02.15]不知不觉已变淡
[01:05.40]心里爱(谁明白我)
[01:09.28]原谅我这一生不羁放纵爱自由
[01:16.15]也会怕有一天会跌倒
[01:22.21]被弃了理想谁人都可以
[01:28.29]那会怕有一天只你共我

可以看到LRC歌词的基本形式是[分:秒.毫秒]

现在来写代码

function LoadLrc(sUrl:String):Void//加载并分析歌词
{
 //定义两个数组,mylrc用过分析过程使用.newlrc为最终保存歌词的数组
 newlrc = new Array();
 mylrc = new Array();
  var lrc:LoadVars = new LoadVars();
  lrc.load(sUrl);
  lrc.onLoad=function(success:Boolean):Void
  {
    if(success)//判断是否加载成功
    {
   var str:String;
   str=unescape(lrc.toString());
      mylrc = str.split("/n");
   for (i=0; i<mylrc.length; i++)
      {
    if (mylrc[i].substr(0, 3) == "[ti"){}//歌名标签
    else if (mylrc[i].substr(0, 3) == "[ar"){}//乐队标签
    else if (mylrc[i].substr(0, 3) == "[al"){}//专辑标签
    else if (mylrc[i].substr(0, 3) == "[by"){}//
    else if (mylrc[i].substr(0, 1) == "[")//歌词时间戳
    { 
         var temp:Array = mylrc[i].split("]");
     //判断是不是同时有两个或以上的时间(有时候一句歌词出现几次就会有这种情况)
         if(temp.length == 2)//只有一句歌词
     {
           newlrc.push(deleteStr(temp[0])+"|"+temp[1]);//加入数组
         }
     else if (temp.length>2)//有两句以上的歌词
     {
           for(k=0; k<temp.length-1; k++)
      {
             newlrc.push(deleteStr(temp[k])+"|"+temp[temp.length-1]);
           }
         }
       }
      }
    }
    if(newlrc.length<1)//加载不成功或分析不成功.
  {
      newlrc.push("1|找不到歌词 歌词文件:"+sUrl);
    }
  tmpLrc = new Array();
    newlrc.sort();//进行时间排序,如果只需要一条一条显示,不使用也可
    for (i=0; i<newlrc.length; i++)
  {
   tmpLrc=newlrc[i].split("|");
   Mianban.addCuePoint(tmpLrc[1],tmpLrc[0]);
    }
  };
}

重点代码就是这些,详细的可以下载源码看一看

 

FALSE实现歌词同步.rar

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值