导航

 Flexs.cn

Flash、AS2 、AS3、Flex、FMS、RED5、AIR 、游戏制作教程聚合

« Flash弹出浏览窗口方法集合游戏中导弹追踪的算法 »

FLAHS中实现LRC歌词动态显示

winplay中可以使用LRC插件来实现歌词的动态显示,在FLASH中也可以[演示],选择一首排行版的歌曲,比较容易看到。

如果你细心,用记事本打开一个LRC文件,他的文件格式如下:

[ti:东风破]
[ar:周杰伦]
[al:叶惠美]
[by:叶泽生]
[offset:500]
[00:00.00]东风破
[00:03.22]
[00:05.46]周杰伦
[00:07.37]詞:方文山 曲:周杰伦
[00:10.27]LRC:叶泽生
[00:12.45]
[00:13.88]一盏离愁孤单伫立在窗口
[00:20.20]我在门后假装你人还没走
[00:26.52]旧地如重游月圆更寂寞
[00:32.98]夜半清醒的烛火不忍苛责我
[00:40.04]一壶漂泊浪迹天涯难入喉
[00:46.47]你走之后酒暖回忆思念瘦
[00:52.93]水向东流时间怎么偷
[00:59.28]花开就一次成熟我却错过
[01:06.31]
[03:50.68][02:58.31][01:09.30]谁在用琵琶弹奏一曲东风破
[03:57.23][03:04.88][01:16.23]岁月在墙上剥落看见小时候
[04:03.55][03:11.11][01:22.58]犹记得那年我们都还很年幼
[04:10.30][03:17.62][01:28.87]而如今琴声幽幽我的等候你没听过
[04:17.07][03:24.50][01:36.08]谁在用琵琶弹奏一曲东风破
[04:23.67][03:30.95][01:42.30]枫叶将故事染色结局我看透
[04:30.02][03:37.35][01:48.88]篱笆外的古道我牵着你走过
[04:36.69][01:55.52]荒烟漫草的年头就连分手都很沉默
[05:01.62][02:07.25][02:15.36]
[02:27.75]一壶漂泊浪迹天涯难入喉
[02:35.15]你走之后酒暖回忆思念瘦
[02:41.54]水向东流时间怎么偷
[02:48.06]花开就一次成熟我却错过
[05:09.43][04:49.63][02:57.23]
[03:43.97]荒烟漫草的年头就连分手都

这个东西如果FLASH读比较麻烦,但如果的VBS的正则表达式就比较方便,将结果输出成下面的样子:

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE MUSIC [
 <!ELEMENT MUSIC (ARTIST, TITLE, ALBUM, LANGUAGE, EDITER, OFFSET, LYRICS)>
 <!ELEMENT ARTIST (#PCDATA)>
 <!ELEMENT TITLE (#PCDATA)>
 <!ELEMENT ALBUM (#PCDATA)>
 <!ELEMENT LANGUAGE (#PCDATA)>
 <!ELEMENT EDITER (#PCDATA)>
 <!ELEMENT OFFSET (#PCDATA)>
 <!ELEMENT LYRICS (LRC)*>
 <!ELEMENT LRC (#PCDATA)>
 <!ATTLIST LRC
  TAG CDATA #REQUIRED>
]>
<MUSIC>
 <ARTIST>周杰伦</ARTIST>
 <TITLE>东风破</TITLE>
 <ALBUM>叶惠美</ALBUM>
 <LANGUAGE></LANGUAGE>
 <EDITER>叶泽生</EDITER>
 <OFFSET>500</OFFSET>
 <LYRICS>
  <LRC TAG="0">东风破</LRC>
  <LRC TAG="3220"></LRC>
  <LRC TAG="5460">周杰伦</LRC>
  <LRC TAG="7370">詞:方文山 曲:周杰伦 </LRC>
  <LRC TAG="10270">LRC:叶泽生</LRC>
  <LRC TAG="12450"></LRC>
  <LRC TAG="13880">一盏离愁孤单伫立在窗口</LRC>
  <LRC TAG="20200">我在门后假装你人还没走</LRC>
  <LRC TAG="26520">旧地如重游月圆更寂寞</LRC>
  <LRC TAG="32980">夜半清醒的烛火不忍苛责我</LRC>
  <LRC TAG="40040">一壶漂泊浪迹天涯难入喉</LRC>
  <LRC TAG="46470">你走之后酒暖回忆思念瘦</LRC>
  <LRC TAG="52930">水向东流时间怎么偷</LRC>
  <LRC TAG="59280">花开就一次成熟我却错过</LRC>
  <LRC TAG="66310"></LRC>
  <LRC TAG="69300">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="76230">岁月在墙上剥落看见小时候</LRC>
  <LRC TAG="82580">犹记得那年我们都还很年幼</LRC>
  <LRC TAG="88870">而如今琴声幽幽我的等候你没听过</LRC>
  <LRC TAG="96080">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="102300">枫叶将故事染色结局我看透</LRC>
  <LRC TAG="108880">篱笆外的古道我牵着你走过</LRC>
  <LRC TAG="115520">荒烟漫草的年头就连分手都很沉默</LRC>
  <LRC TAG="127250"></LRC>
  <LRC TAG="135360"></LRC>
  <LRC TAG="147750">一壶漂泊浪迹天涯难入喉</LRC>
  <LRC TAG="155150">你走之后酒暖回忆思念瘦</LRC>
  <LRC TAG="161540">水向东流时间怎么偷</LRC>
  <LRC TAG="168060">花开就一次成熟我却错过</LRC>
  <LRC TAG="177230"></LRC>
  <LRC TAG="178310">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="184880">岁月在墙上剥落看见小时候</LRC>
  <LRC TAG="191110">犹记得那年我们都还很年幼</LRC>
  <LRC TAG="197620">而如今琴声幽幽我的等候你没听过</LRC>
  <LRC TAG="204500">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="210950">枫叶将故事染色结局我看透</LRC>
  <LRC TAG="217350">篱笆外的古道我牵着你走过</LRC>
  <LRC TAG="223970">荒烟漫草的年头就连分手都</LRC>
  <LRC TAG="230680">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="237230">岁月在墙上剥落看见小时候</LRC>
  <LRC TAG="243550">犹记得那年我们都还很年幼</LRC>
  <LRC TAG="250300">而如今琴声幽幽我的等候你没听过</LRC>
  <LRC TAG="257070">谁在用琵琶弹奏一曲东风破</LRC>
  <LRC TAG="263670">枫叶将故事染色结局我看透</LRC>
  <LRC TAG="270020">篱笆外的古道我牵着你走过</LRC>
  <LRC TAG="276690">荒烟漫草的年头就连分手都很沉默</LRC>
  <LRC TAG="289630"></LRC>
  <LRC TAG="301620"></LRC>
  <LRC TAG="309430"></LRC>
 </LYRICS>
</MUSIC>

 

采用FLASH的XML读取,他将十分的便捷。

 Music_word_arr = new Array();
//新的数组,存放歌词
 Music_word_xml = new XML();
//新的XML对象,也就是存放上面所说的XML
 Music_word_xml.ignoreWhite = true;
 Music_word_xml.onLoad = function(success) {
  if (success) {
       var tracks_xml = Music_word_xml.firstChild;
       var LRC = tracks_xml.childNodes[tracks_xml.childNodes.length-1];
       for (var i = 0; i<LRC.childNodes.length; i++) {
            var time = LRC.childNodes[i].attributes.TAG;
            //获取时间
            var geci = LRC.childNodes[i].childNodes;
           
//获取歌词
            Music_word_arr.push({Time:time, Word:geci});
            //将时间信息及歌词存在Music_word_arr数组中
       }
            Show_Word();
            //输出
      } else {
             trace("Error loading MusicWord.");
            //如果没有加载,则显示错误
      }
      delete Music_word_xml;
    
//删除XML对象
 };
Music_word_xml.load(URL);

现在我们该说说如何让歌词与歌曲同步。

还是看代码吧,代码说明一切:

function Show_Word() {
 t = 0;
 Word.text = "";
 music_word = new Object();
 //循环对象
 music_word.interval = function() {
  var zs = mySound.position/100;
  if (int(Music_word_arr[t].Time/100) == int(zs)) {
   if (Music_word_arr[t].Word == "" || Music_word_arr[t].Word == null) {
    Word.text = "";
   } else {
    Word.text = Music_word_arr[t].Word;
   }
   t++;
  }
  if (int(Music_word_arr[t].Time/100)<int(zs)) {
   t++;
  }
 };
 music_word_n = setInterval(music_word, "interval", 10);
}

应该很容易看懂,因为不长,值得注意的地方有一个:
  if (int(Music_word_arr[t].Time/100)<int(zs)) {
   t++;
  }

这行代码有什么用?他主要用来解决歌曲播放了,而歌词还没有加载,在这个时候,他就负责让歌词上歌曲播放进度,而不要让歌曲他。其实他还有一个更重要的功能,我想做过播放器的人应该都会知道,在这里我就不说了,你自己想想吧,哈哈~~~~~(好象有些不对??¥%¥#   有不明物体降落……啊~!!!!!)

为避免有人看不懂,我上传一个示例吧。
下载原文件

文章来自: Wersling's Blog

  • quote 1.加盟网
  • http://www.fineadv.cn
  • 100个很容易赚钱的项目http://www.fineadv.cn加盟网
    [url=http://www.fineadv.cn] 服装加盟 [/url]
    <a href=http://www.fineadv.cn> 餐饮加盟 </a>
  • 2008-2-28 20:24:09 
  • quote 2.EEE
  • 祖国未统一 心情好郁闷
    [url=http://www.zzhuke.com]河南整形医院[/url]
    [url=http://www.zzhuke.com]河南整形美容医院[/url]
    [url=http://www.zzhuke.com]河南整形[/url]
    [url=http://www.zzhuke.com]郑州整形医院[/url]
    [url=http://www.zzhuke.com]郑州整形美容医院[/url]
    [url=http://www.zzhuke.com]郑州整形美容[/url]
    [url=http://www.gaogepol.com]抛光粉[/url]
    [url=http://www.gaogepol.com]玻璃抛光材料[/url]
  • 2008-12-19 13:30:46 
  • quote 4.实验台
  • http://www.lab48.cn
  • [url=http://www.580pm.cn]google排名[/url][url=http://www.googlepm.net]google推广[/url][url=http://www.nj87771234.com/]南京租车[/url] [url=http://www.1971yien.com/]加拿大投资移民[/url][url=http://www.njbjgslm.cn/]南京搬家[/url] [url=http://www.lab110.com/P102.htm]电子天平[/url]
    [url=http://www.lab110.com/P7421.htm]万能试验机[/url] [url=http://www.lab110.com/P2271.htm]灭菌器[/url]
    [url=http://www.lab110.com/P476.htm]超声波探伤仪[/url] [url=http://www.wx-lab.cn/]实验台[/url]
    [url=http://www.wx-lab.cn/]通风柜[/url][url=http://www.lab48.cn/]实验台[/url] [url=http://www.lab48.cn/]通风柜[/url]
  • 2009-7-31 11:34:09 
  • quote 5.Towercrane
  • http://www.chinatowercrane.cn/Towercrane.htm
  • 雨过了,我站上电线杆 等风把我吹干。。。[url=http://www.chinatowercrane.cn/Towercrane.htm]Tower Crane[/url],
    [url=http://www.tc977.com/Towercrane.htm]Tower Crane[/url],[url=http://www.unicotech.com.cn/]臭氧治疗仪[/url][url=http://zhongqipeijian.com.cn]重汽配件/重卡配件[/url]
  • 2010-1-5 10:36:49 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。


Powered By MaxSugar

Copyright 2005-2007 Flexs.cn Some Rights Reserved.

Search

最近发表