源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

在Flash中用as实现lrc歌词动态显示

  • 时间:2021-11-21 13:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:在Flash中用as实现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++; } 这行代码有什么用?他主要用来解决歌曲播放了,而歌词还没有加载,在这个时候,他就负责让歌词追上歌曲播放进度,而不要让歌曲等他。其实他还有一个更重要的功能,我想做过播放器的人应该都会知道,在这里我就不说了,你自己想想吧,哈哈~~~~~(好象有些不对??¥%¥# 有不明物体降落……啊~!!!!!)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部