网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Flex播放器怎么同步显示歌词

这篇文章主要为大家展示了“Flex播放器怎么同步显示歌词”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex播放器怎么同步显示歌词”这篇文章吧。

博州网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联公司公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

Flex播放器同步显示歌词

在听完S.H.E的你最近还吗不下一百遍,终于搞好了Flex播放器同步显示歌词这一功能。这是继上一篇Flex播放器(实现播放、缓冲进度条和音频曲线显示)后的一扩展功能,本例是实现对lrc文本格式的歌词进行解析显示,并把当前播放歌词一行文本进行高亮显示。

播放歌曲时要同步显示歌词,首先必须要能解析出lrc格式的歌词文本,之前我还准备直接在网上匹配下载对应歌词,打开我机器的千千静音在线匹配歌词,然后用HTTPAnalyzerStdV监视所有的http请求,发现它是请求这个ttlrcct.qianqian.com网站下载歌词,本来还是直接套用千千静音服务器下载歌词,但是它的url参数全部加密了。后来又看了下酷狗音乐,它里面下载歌词我都监视不请求,考虑到就算我能在线找到下载歌词的url地址,flash里发送远程请求也会有安全杀箱问题,所以最终放弃直接在网络上下载歌词的办法,还是全部上传到我网站上去。

lrc歌词其实就是一个文本格式的文件,在Flex里面我们可以使用URLLoader去加载,代码如下:

/加载歌词varlrcUrl:String=xml.item[currIndex].lrc;if(lrcUrl!=null&&lrcUrl!="")  {varlrc:URLLoader=newURLLoader();//lrc.dataFormat=URLLoaderDataFormat.VARIABLES;  lrc.load(newURLRequest(lrcUrl));lrc.addEventListener(Event.COMPLETE,LRC_Complete);  lrc.addEventListener(IOErrorEvent.IO_ERROR,LRC_IOError);}lrcArr=null;outPutLRCString="";  startIndexOf=0;txtLrc.text="";

然后在加载完成的事件里,我们能得到lrc文本字符串,这时候我们需要对字符串进行处理,把它转换成一个Array数组,函数方法如下:

publicfunctiongetLRCArray(lrc:String):Array{varlrcArr:Array=newArray;  lrc+="\r";for(vari:int=0;i

解析歌词返回的Array数组为多围数组,数组里的每一项是为一个二围数组,item[0]为当前秒数,item[1]为该秒显示的歌词(句),比如item[0]=歌曲名:你最近还好吗、item[5]=演唱:S.H.E,就是代表第0秒显示歌曲名:你最近还好吗,而从第5秒起则显示演唱:S.H.E,这样通过getLRCArray方法就能得到歌曲所有的时间段显示的歌词拉。本例中把所有歌词放在一个editable="false"不可修改的mx:TextArea文本域内。

Flex播放器歌词同步显示的问题

歌词能全部加载显示了,问题是怎么随着歌曲的播放而高亮显示当前行歌词呢?不过还好Flex提供一个TextRange能对TextArea内文本进行选择性的处理,你只需要设置beginIndex和endIndex就能自动匹配到TextArea中间区域的文本,我这里只是简单的改变了一下颜色,不过我们从TextArea中找某一个句歌词索引的时候需要注意歌词有很多是重复的,所以我们需要用一个变量保存当前歌词播放位置索引startIndexOf,以确保我们高亮选择到的歌词是正确的。同时将TextArea滚动条设置到对应的高度,主要的代码如下:

//同步显示歌词if(lrcArr!=null&&lrcArr.length>0){varsec:Number=int(channel.position/1000);  for(varj:int=0;j

上面sec是当前歌曲播放的时间秒数,然后循环换数组判断rcArr[j][0]跟当前sec比较,秒数一致才显示对应歌词,一段歌词可能在好几秒内都不会变的,同时根据当前歌词的数组索引位置设置TextArea滚动条位置,让当前正在播放的歌词在中间显示。

以上是“Flex播放器怎么同步显示歌词”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享名称:Flex播放器怎么同步显示歌词
当前地址:http://bjjierui.cn/article/gooegj.html

其他资讯