最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MP3播放器教程之一:LRC歌词分析
时间:2008-03-25 编辑:简简单单 来源:一聚教程网
很多网友对我之前发的MP3播放器很兴趣...于是准备写一个教程,把里边用到了一些功能详细介绍一下...
原理:
其实lrc文件不过是固定格式的一个文本文档。
由
[时间]歌词
或
[时间][时间...]歌词
这样的形式保存
那么先以换行符分割行,再以"]"分割歌词与时间。把歌词与时间整理存进数组就可以了。
代码:直接看代码吧
代码没怎么优化,写得挺乱了,别见怪 用时直接用:
getlrc(lrc文件路径就可以了)
歌词会保存在一个叫newlrc的数组里.当然改一下做成返回数组也可以,这样按大家发挥就可以了
注意:由于swf不可以跨域读取外部文件(了解安全性 > 关于域、跨域安全性和 SWF 文件)
默认情况下,Flash Player 7 和更高版本防止从一个域提供的 SWF 文件读取从另一个域提供的 SWF 文件的数据、对象或变量。另外,通过不安全的(非 HTTPS)协议加载的内容不能读取通过安全的 (HTTPS) 协议加载的内容,即使两者都在完全相同的域中。例如,未经显式许可,位于 http://www.macromedia.com/main.swf 的 SWF 文件不能加载 https://www.macromedia.com/data.txt 中的数据;从一个域提供的 SWF 文件也不能加载另一个域的数据(例如使用 loadVars()
)。
这个问题的解决方法,可以在swf所在的域中用动态语言(.net/asp/php/jsp)等把域上的lrc读进来再传给flash.或者直接就把歌词存在自己空间里。
好了,分析歌词就说到这里,下一步我们会介绍歌词与mp3同步...
function getlrc(path) {
//定义两个数组,mylrc用过分析过程使用.newlrc为最终保存歌词的数组
newlrc = new Array();
mylrc = new Array();
//加载外部lrc文件
lrc = new LoadVars();
lrc.load(path);
lrc.onData = function(str) {
//判断是否加载成功
if (str != undefined) {
//以“换行符”分割歌词保存在mylrc中
mylrc = str.split(chr(13)+chr(10));
//循环每一行...
for (i=0; i
//包含"[ti"为歌名,暂时不需要使用,备注掉,下同//
//var temp = mylrc[i].split(":")[1];
//temp = temp.substr(0, temp.length-1);
//newlrc.push("00:00.00|歌名:"+temp);
} else if (mylrc[i].substr(0, 3) == "[ar") {
//演唱//
//var temp = mylrc[i].split(":")[1];
//temp = temp.substr(0, temp.length-1);
//newlrc.push("00:00.01|演唱:"+temp);
} else if (mylrc[i].substr(0, 3) == "[al") {
//专辑//
//var temp = mylrc[i].split(":")[1];
//temp = temp.substr(0, temp.length-1);
//newlrc.push("00:00.02|专辑:"+temp);
} else if (mylrc[i].substr(0, 1) == "[") {
//正常的歌词
var temp:Array = mylrc[i].split("]");//判断是不是同时有两个或以上的时间(有时候一句歌词出现几次就会有这种情况)
if (temp.length == 2) {//只有一句歌词
newlrc.push(deleteStr(temp[0])+"|"+temp[1]);//加入数组
} else if (temp.length>2) {//有两句以上的歌词
for (k=0; k
}
}
//ps:这里保存歌词数组的方法有两种:
//newlrc["00.00.0"] = "歌词"
//newlrc[0]="00.00.0|歌词"
//对只歌词一条一条显示的情况.第一种方法更为方便
//对于列表显示的情况,第二种更为方便
}
}
}
if (newlrc.length<1) {//加载不成功或分析不成功.
newlrc.push("00.00.0|找不到歌词");
}
newlrc.push("99.99.9|欢迎使用i4cd mp3player");
newlrc.sort();//进行时间排序,如果只需要一条一条显示,不使用也可
//以下代码只是把歌词显示出来,非必要
txtArea.text = "";
for (i=0; i
}
};
}
function deleteStr(str) {//删除多余的[]
var temp:String = str;
return (temp.substr(1, temp.length-1));
}
function getStr(str, num) {//返回指定格式的时间文本
var temp:String = str;
if (temp.length
}
return (temp.substr(0, num));
}
-
上一个: MP3播放器教程之二:歌词同步
-
下一个: as 3.0解析xml文档
相关文章
- FLASH软件帧编辑功能怎么使用 06-22
- FLASH软件常用上色工具怎么使用 06-19
- flash怎么制作遮罩图片切换动画 06-19
- FLASH制作春意盎然花园效果 06-18
- 利用ae制作碎片文字动画 06-15
- flash图片怎么替换 06-14