快速业务通道

在FLAHS中实现LRC歌词动态显示

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-11


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的正则表达式就比较方便,将结果输出成下面的样子:









TAG CDATA #REQUIRED>
]>

周杰伦
东风破
叶惠美

叶泽生
500

东风破

周杰伦
詞:方文山 曲:周杰伦
LRC:叶泽生

一盏离愁孤单伫立在窗口
我在门后假装你人还没走
旧地如重游月圆更寂寞
夜半清醒的烛火不忍苛责我
一壶漂泊浪迹天涯难入喉
你走之后酒暖回忆思念瘦
水向东流时间怎么偷
花开就一次成熟我却错过

谁在用琵琶弹奏一曲东风破
岁月在墙上剥落看见小时候
犹记得那年我们都还很年幼
而如今琴声幽幽我的等候你没听过
谁在用琵琶弹奏一曲东风破
枫叶将故事染色结局我看透
篱笆外的古道我牵着你走过
荒烟漫草的年头就连分手都很沉默


一壶漂泊浪迹天涯难入喉
你走之后酒暖回忆思念瘦
水向东流时间怎么偷
花开就一次成熟我却错过

谁在用琵琶弹奏一曲东风破
岁月在墙上剥落看见小时候
犹记得那年我们都还很年幼
而如今琴声幽幽我的等候你没听过
谁在用琵琶弹奏一曲东风破
枫叶将故事染色结局我看透
篱笆外的古道我牵着你走过
荒烟漫草的年头就连分手都
谁在用琵琶弹奏一曲东风破
岁月在墙上剥落看见小时候
犹记得那年我们都还很年幼
而如今琴声幽幽我的等候你没听过
谁在用琵琶弹奏一曲东风破
枫叶将故事染色结局我看透
篱笆外的古道我牵着你走过
荒烟漫草的年头就连分手都很沉默




采用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; ivar 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);
今天就写这些 更多的文档请查看:http://www.wersling.com/blog
前面说到的XML解析,现在我们该说说如何让歌词与歌曲同步。 还是看代码吧,代码说明一切: 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)t++;
}
};
music_word_n = setInterval(music_word, "interval", 10);
}

应该很容易看懂,因为不长,值得注意的地方有一个
if (int(Music_word_arr[t].Time/100)t++;
}
这行代码有什么用?他主要用来解决歌曲播放了,而歌词还没有加载,在这个时候,他就负责让歌词追上歌曲播放进度,而不要让歌曲等他。其实他还有一个更重要的功能,我想做过播放器的人应该都会知道,在这里我就不说了,你自己想想吧,哈哈~~~~~(好象有些不对??¥%¥# 有不明物体降落……啊~!!!!!)

为避免有人看不懂,我上传一个示例吧。晕超过大小?才5M,哎,只好请到我的BOLG下载:http://www.wersling.com/blog/more.ASP?name=wersling&id=17
关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号