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

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

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

时间: 2024-10-30 12:21:10

在Flash中用as实现lrc歌词动态显示_Flash As的相关文章

Flash播放器显示LRC歌词代码

flash播放|显示 演示地址:http://www.kaitian.cc/bbs/music/index.html function view() { timegesu = 1; totalgeci = new Array(); total = new Array(); text_st = String(_parent.story); array_t = text_st.split("\n"); //拆分为数组. for (i=0; i<array_t.length; i++)

FLASH制作LRC歌词播放器教程

教程 自WINAMP出了个迷你歌词以后,笔者一直心里痒痒的,想找个时间自己也做一个.现在做好了,大家先预览一下效果.测试地址一asp5.6to23.com/7years/yiyuan7years/HBrO/Player/mp3player_x1.swf测试地址二download.incoo.com/blueidea/hbro/player/mp3player_x1.swf其中歌词就是现在标准的WINAMP的LRC文件,从别处下载的,没作任何修改,就是说,这个播放器可以用于播放WINAMP格式的L

flash中显示LRC歌词原理

显示 ttp://www.flashk.org/.....Sukii-o/mp3/s2 music player支持LRC歌词显示,它得的地址:http://www.flashk.org/.....Sukii-o/mp3/由zas开发的s2 music player LRC歌词原理(由zas本人提供)://--接口-- function loadLRC(path) { delete this.onEnterFrame; lrcData.timer = new Array(); lrcData.i

MP3播放器教程之一:LRC歌词分析

很多网友对我之前发的MP3播放器很兴趣...于是准备写一个教程,把里边用到了一些功能详细介绍一下... 原理:其实lrc文件不过是固定格式的一个文本文档. 由[时间]歌词 或[时间][时间...]歌词 这样的形式保存 那么先以换行符分割行,再以"]"分割歌词与时间.把歌词与时间整理存进数组就可以了. 代码:直接看代码吧   代码没怎么优化,写得挺乱了,别见怪   用时直接用: getlrc(lrc文件路径就可以了) 歌词会保存在一个叫newlrc的数组里.当然改一下做成返回数组也可以,

LRC 歌词同步

LRC 歌词同步,大家看到了baidu在线歌词同步功能,现在我们也用flash实现lrc歌词同步下载和lrc歌词同步显示  大家也可以把这个文本内容复制下来,然后在"C:\My Player\LRC\"下创建一个文本文档,将内容粘贴上去,再将文档保存为"青花瓷.lrc",注意扩展名是".lrc". 二.LRC 内容分析     准备工作完成了,下面分析一下这个 LRC 文件.之所以叫 LRC ,是因为它是 Lyric (歌词) 的缩写.这种格式真

将酷狗krc歌词解析并转换为lrc歌词php源码_php技巧

最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是"乱码",自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词. 对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码: public function loaderCompleteHandler(param1:ByteArray) : void{ this.new

AJAX集天气\IP\多国语言翻译MP3(可同步LRC歌词显示)\万年历查询通_AJAX相关

'转发时请保留此声明信息,这段声明不并会影响你的速度! '****天枫AJAX集天气\IP\多国语言翻译MP3(可同步LRC歌词显示)\万年历查询通******** '作者:天枫 '网站:http://www.52515.net '电子邮件:chenshaobo@gmail.com 'WEB开发群:4635188 19182747 'QQ:76994859 '版权声明:版权所有,源代码公开,各种用途均可免费使用,但是修改后必须把修改后的文件 '发送一份给作者.并且保留作者此版权信息 '*****

酷狗krc歌词解析并转换为lrc歌词php版

最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是"乱码",自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词. 于是搜索了下发现有个java版的半成品解密代码,测试了下竟然还是"乱码",巨坑!于是只有采用最原始的办法,对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码:  代码如下 复制代

浏览器跨域获取Lrc歌词数据的解决办法

解决|浏览器|数据 获取同一个域的数据,可以通过XMLHTTP组件或IFRAME来实现,不存在跨域访问的权限问题,因此比较简单.     但如果要访问不同域的数据时,由于浏览器的安全设置,XMLHTTP没有权限获取数据,而IFRAME没有权限将获取的数据传递给父窗口,似乎没有其它解决办法.     顿悟--     网页内引用不同域的脚本并不会提示权限不足,对了,就是它没错!     解决方法找到了,现在来简单测试一下:     首先在51js.com服务器上新建一页面(Test.html).