在Flash中用as实现lrc歌词动态显示_Flash教程-查字典教程网
在Flash中用as实现lrc歌词动态显示
在Flash中用as实现lrc歌词动态显示
发布时间:2016-12-28 来源:查字典编辑
摘要:Winplay中可以使用LRC插件来实现歌词的动态显示,在FLASH中也可以[演示],选择一首排行版的歌曲,比较容易看到。如果你细心,用记事...

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++;

}

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Flash教程学习
    热门Flash教程学习
    网页设计子分类