引用内容
该文章为Demo用途,请见谅…
该文章来自猫粮的blog:
[url=http://blog.xflex.cn/]
[color="#006e01"]http://blog.xflex.cn[/color]
[/url]
。
自己做的mp3播放器需要一个歌词显示功能,baidu一下以后就看到zas大大的歌词显示的代码。将它理解以后...就有了下面的mp3播放器+歌词显示的demo....
运行环境:Flash9.把代码直接黏贴取第一帧就ok。歌词的xml文档在
[url=http://lrcsky.feiyes.net/]
[color="#006e01"]http://lrcsky.feiyes.net/[/color]
[/url]
可以下载到。我想注释已经讲得很清楚了..大家就看代码吧..关键的也就几句而已。
当然,下面给您奉上的是源代码~还是老样子,没有显示样例(因为是trace输出的)。
请到
[url=http://xflex.cn/blog/article.asp?id=37]
[color="#006e01"]http://xflex.cn/blog/article.asp?id=37[/color]
[/url]
下载
程序代码
//定义Sound实例
var song:SoundChannel;
var Mp3Player:Sound;
var t:Number=0;
request=new URLRequest("http://www.rainbow6.cn/attachments/month_0606/b20066932028.mp3");
Mp3Player= new Sound(request);
song=Mp3Player.play();
//========================理解的分界线=======================
//加载xml文档
// 歌词来自:
[url=http://lrcsky.feiyes.ne/]
[color="#006e01"]http://lrcsky.feiyes.ne/[/color]
[/url]
//因为分析lrc太麻烦,所以改用xml格式。同时也体现了E4x在分析xml文档时候强大的实力
//代码长度和分析lrc文件相比,实在差太远..
//而且..我只需要做分析xml的歌词文件就ok了,咪哈哈.....
var myXML:XML = new XML();
var Time:Array;
var Word:Array;
var XML_URL:String = "爸爸妈妈.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
//xml文档加载成功后执行的动作。
myLoader.addEventListener("complete", xmlLoaded);
//========================增加理解的分界线=======================
function xmlLoaded(evtObj:Event):Object {
//geda大大说要测试效率,我不知道怎么测试..只能看时间了..
trace(getTimer());
//声明两个数组,一个用来存放时间,一个用来存放歌词。
Time = new Array();
Word = new Array();
myXML = XML(myLoader.data);
var i:Number = 0;
//myXML.LYRICS.LRC.length():得到xml文档的行数
var b:Number = myXML.LYRICS.LRC.length();
for(i =0;i
//
//猫粮
//
//
//myXML.LYRICS.LRC.@TAG是取节点的属性
//返回xxxx;
//myXML.LYRICS.LRC是取节点值,返回猫粮
Time=myXML.LYRICS.LRC.@TAG;
Word=myXML.LYRICS.LRC;
}
trace(getTimer());
//分析完大概是用了30多毫秒,速度还可以。
}
//========================增加理解的分界线=======================
//设定循环时间
myTimer = new Timer(500);
myTimer.addEventListener(TimerEvent.TIMER,lrcOnShow);
myTimer.start();//定时器开始
function lrcOnShow(even:Event)
{
//这里受益于zas的思路..大概都是这样显示的吧…
//让Time[t]的时间永远高于当前播放时间
//并且显示的歌词是Time[t]的前一句。
//歌词和时间的同步,通过设定同样的下标来实现~
if(song.position>Time[t])
{
t++
trace(Word[t-1]);
}
//在这里,其实先要设定一个变量来保存position属性。
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1801.html
该文章为Demo用途,请见谅…
该文章来自猫粮的blog:
[url=http://blog.xflex.cn/]
[color="#006e01"]http://blog.xflex.cn[/color]
[/url]
。
自己做的mp3播放器需要一个歌词显示功能,baidu一下以后就看到zas大大的歌词显示的代码。将它理解以后...就有了下面的mp3播放器+歌词显示的demo....
运行环境:Flash9.把代码直接黏贴取第一帧就ok。歌词的xml文档在
[url=http://lrcsky.feiyes.net/]
[color="#006e01"]http://lrcsky.feiyes.net/[/color]
[/url]
可以下载到。我想注释已经讲得很清楚了..大家就看代码吧..关键的也就几句而已。
当然,下面给您奉上的是源代码~还是老样子,没有显示样例(因为是trace输出的)。
请到
[url=http://xflex.cn/blog/article.asp?id=37]
[color="#006e01"]http://xflex.cn/blog/article.asp?id=37[/color]
[/url]
下载
程序代码
//定义Sound实例
var song:SoundChannel;
var Mp3Player:Sound;
var t:Number=0;
request=new URLRequest("http://www.rainbow6.cn/attachments/month_0606/b20066932028.mp3");
Mp3Player= new Sound(request);
song=Mp3Player.play();
//========================理解的分界线=======================
//加载xml文档
// 歌词来自:
[url=http://lrcsky.feiyes.ne/]
[color="#006e01"]http://lrcsky.feiyes.ne/[/color]
[/url]
//因为分析lrc太麻烦,所以改用xml格式。同时也体现了E4x在分析xml文档时候强大的实力
//代码长度和分析lrc文件相比,实在差太远..
//而且..我只需要做分析xml的歌词文件就ok了,咪哈哈.....
var myXML:XML = new XML();
var Time:Array;
var Word:Array;
var XML_URL:String = "爸爸妈妈.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
//xml文档加载成功后执行的动作。
myLoader.addEventListener("complete", xmlLoaded);
//========================增加理解的分界线=======================
function xmlLoaded(evtObj:Event):Object {
//geda大大说要测试效率,我不知道怎么测试..只能看时间了..
trace(getTimer());
//声明两个数组,一个用来存放时间,一个用来存放歌词。
Time = new Array();
Word = new Array();
myXML = XML(myLoader.data);
var i:Number = 0;
//myXML.LYRICS.LRC.length():得到xml文档的行数
var b:Number = myXML.LYRICS.LRC.length();
for(i =0;i
//
//猫粮
//
//
//myXML.LYRICS.LRC.@TAG是取节点的属性
//返回xxxx;
//myXML.LYRICS.LRC是取节点值,返回猫粮
Time=myXML.LYRICS.LRC.@TAG;
Word=myXML.LYRICS.LRC;
}
trace(getTimer());
//分析完大概是用了30多毫秒,速度还可以。
}
//========================增加理解的分界线=======================
//设定循环时间
myTimer = new Timer(500);
myTimer.addEventListener(TimerEvent.TIMER,lrcOnShow);
myTimer.start();//定时器开始
function lrcOnShow(even:Event)
{
//这里受益于zas的思路..大概都是这样显示的吧…
//让Time[t]的时间永远高于当前播放时间
//并且显示的歌词是Time[t]的前一句。
//歌词和时间的同步,通过设定同样的下标来实现~
if(song.position>Time[t])
{
t++
trace(Word[t-1]);
}
//在这里,其实先要设定一个变量来保存position属性。
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1801.html