在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> ]> 周杰伦 叶惠美 //新的数组,存放歌词 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 //获取时间 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) } }; music_word_n = setInterval(music_word, "interval", 10); } if (int(Music_word_arr[t].Time/100) } 为避免有人看不懂,我上传一个示例吧。晕超过大小?才5M,哎,只好请到我的BOLG下载:http://www.wersling.com/blog/more.ASP?name=wersling&id=17 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 鼠标跟随下一篇: sound对象在FLASH中的应用
关于在FLAHS中实现LRC歌词动态显示的所有评论