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

Tag:

推荐: flash 同步加载多个外部swf的方法
flash 同步加载多个外部swf的方法 //参数分别是文件数量,起点x,起点y,宽度比例,高度比例,排列间距. //注意外部文件分别为0.swf,1.swf,2.swf.........递增的,其实稍微改下

很多网友对我之前发的MP3播放器很兴趣...于是准备写一个教程,把里边用到了一些功能详细介绍一下...dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

原理:dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
其实lrc文件不过是固定格式的一个文本文档。dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
[时间]歌词dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
[时间][时间...]歌词dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
这样的形式保存dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
那么先以换行符分割行,再以"]"分割歌词与时间。把歌词与时间整理存进数组就可以了。dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

代码:直接看代码吧dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

代码没怎么优化,写得挺乱了,别见怪   用时直接用:dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
getlrc(lrc文件路径就可以了)dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
歌词会保存在一个叫newlrc的数组里.当然改一下做成返回数组也可以,这样按大家发挥就可以了dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

注意:由于swf不可以跨域读取外部文件(了解安全性 > 关于域、跨域安全性和 SWF 文件)dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

默认情况下,flash Player 7 和更高版本防止从一个域提供的 SWF 文件读取从另一个域提供的 SWF 文件的数据、对象或变量。另外,通过不安全的(非 HTTPS)协议加载的内容不能读取通过安全的 (HTTPS) 协议加载的内容,即使两者都在完全相同的域中。例如,未经显式许可,位于 http://www.macromedia.com/main.swf 的 SWF 文件不能加载 https://www.macromedia.com/data.txt 中的数据;从一个域提供的 SWF 文件也不能加载另一个域的数据(例如使用 loadVars())。dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

这个问题的解决方法,可以在swf所在的域中用动态语言(.net/asp/php/jsp)等把域上的lrc读进来再传给flash.或者直接就把歌词存在自己空间里。dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

好了,分析歌词就说到这里,下一步我们会介绍歌词与mp3同步...dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

//分析歌词 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
function getlrc(path) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 //定义两个数组,mylrc用过分析过程使用.newlrc为最终保存歌词的数组 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 newlrc = new Array(); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 mylrc = new Array(); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 //加载外部lrc文件 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 lrc = new LoadVars(); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 lrc.load(path); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 lrc.onData = function(str) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  //判断是否加载成功 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  if (str != undefined) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   //以“换行符”分割歌词保存在mylrc中 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   mylrc = str.split(chr(13)+chr(10)); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   //循环每一行... dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   for (i=0; i<mylrc.length; i++) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
    if (mylrc[i].substr(0, 3) == "[ti") { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //包含"[ti"为歌名,暂时不需要使用,备注掉,下同// dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //var temp = mylrc[i].split(":")[1]; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //temp = temp.substr(0, temp.length-1); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //newlrc.push("00:00.00|歌名:"+temp); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
    } else if (mylrc[i].substr(0, 3) == "[ar") { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //演唱//   dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //var temp = mylrc[i].split(":")[1]; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //temp = temp.substr(0, temp.length-1); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //newlrc.push("00:00.01|演唱:"+temp); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
    } else if (mylrc[i].substr(0, 3) == "[al") { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //专辑//  dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //var temp = mylrc[i].split(":")[1]; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //temp = temp.substr(0, temp.length-1); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //newlrc.push("00:00.02|专辑:"+temp); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
    } else if (mylrc[i].substr(0, 1) == "[") { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //正常的歌词 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     var temp:Array = mylrc[i].split("]");//判断是不是同时有两个或以上的时间(有时候一句歌词出现几次就会有这种情况) dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     if (temp.length == 2) {//只有一句歌词 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
      newlrc.push(deleteStr(temp[0])+"|"+temp[1]);//加入数组 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     } else if (temp.length>2) {//有两句以上的歌词 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
      for (k=0; k<temp.length-1; k++) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
       newlrc.push(deleteStr(temp[k])+"|"+temp[temp.length-1]);//加入数组 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
      } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //ps:这里保存歌词数组的方法有两种: dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //newlrc["00.00.0"] = "歌词" dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //newlrc[0]="00.00.0|歌词" dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //对只歌词一条一条显示的情况.第一种方法更为方便 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
     //对于列表显示的情况,第二种更为方便 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
    } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  if (newlrc.length<1) {//加载不成功或分析不成功. dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   newlrc.push("00.00.0|找不到歌词"); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  newlrc.push("99.99.9|欢迎使用i4cd mp3player"); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  newlrc.sort();//进行时间排序,如果只需要一条一条显示,不使用也可 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  //以下代码只是把歌词显示出来,非必要 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  txtArea.text = ""; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  for (i=0; i<newlrc.length; i++) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
   txtArea.text += newlrc[i].split("|")[1]+"/n"; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 }; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
} dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
function deleteStr(str) {//删除多余的[] dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 var temp:String = str; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 return (temp.substr(1, temp.length-1)); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
} dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
function getStr(str, num) {//返回指定格式的时间文本 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 var temp:String = str; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 if (temp.length<num) { dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
  temp = temp+".00"; dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 } dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
 return (temp.substr(0, num)); dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧
}

 dB6网页模板,帝国cms模板,网站模板免费下载,做网站首选站长魔吧

分享: Flex Chart 选择区域缩放代码
功能: 在Chart上拖拉一个矩形范围可对单个或多个数据系列进行缩放; 在Chart上双击将恢复到缩放前的状态。点击此处查看本实例的效果,点击此处下载本实例的源码。从本质上

作者:admin/ 所属分类:网站运营/ 更新时间:2018-01-11
最新评论:发布评论
条评论

用户名:    密码:   验证码:        匿名评论
相关网站运营教程
    无相关信息
©   2016   www.zzm8.com站长魔吧网
收藏&分享