返回顶部
首页 > 资讯 > 精选 >Flex播放器怎么同步显示歌词
  • 499
分享到

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

2023-06-17 14:06:51 499人浏览 泡泡鱼
摘要

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

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

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<lrc.length;i++){vartime:Number=0;if(lrc.charAt(i)==":"){time=Number(lrc.slice(i-2,i))*60+Number(lrc.slice(i+1,i+3));if(String(time)!="NaN"){varj:uint=0;  varstartIndex:uint=0;varendIndex:uint=0;do{j++;  if(lrc.charAt(i+j)=="]"){startIndex=i+j+1;}}while(i+j<lrc.indexOf("\r",i))endIndex=lrc.indexOf("\r",i);  if(startIndex!=0&&endIndex!=0){lrcArr.push([time,lrc.slice(startIndex,endIndex)]);}}}}returnlrcArr;}

解析歌词返回的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<lrcArr.length;j++){if(lrcArr[j][0]==sec){varcurrentLrc:String=lrcArr[j][1];  if(currentLrc!=this.currLrc.text){currLrc.text=currentLrc;//高亮显示,先清空之前高亮部分vartr:TextRange=newTextRange(txtLrc);tr.color=this.getStyle("color");varbeginIndex:int=this.outPutLRCString.indexOf(currentLrc,startIndexOf);startIndexOf+=currentLrc.length;  varendIndex:int=beginIndex+currentLrc.length;tr.beginIndex=beginIndex;tr.endIndex=endIndex;  if(tr.text!=""){tr.color="yellow";}  //设置滚动条位置this.txtLrc.verticalScrollPosition=j*this.txtLrc.maxVerticalScrollPosition/lrcArr.length;if(lrcArr.length-j<=5)   thisthis.txtLrc.verticalScrollPosition=this.txtLrc.maxVerticalScrollPosition;}break;}}}

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

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

--结束END--

本文标题: Flex播放器怎么同步显示歌词

本文链接: https://lsjlt.com/news/290013.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flex播放器怎么同步显示歌词
    这篇文章主要为大家展示了“Flex播放器怎么同步显示歌词”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex播放器怎么同步显示歌词”这篇文章吧。Flex播放器同步显示歌词在听完S.H.E的你最...
    99+
    2023-06-17
  • Flex播放器如何同步显示歌词
    这篇文章将为大家详细讲解有关Flex播放器如何同步显示歌词,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex播放器同步显示歌词播放歌曲时要同步显示歌词,首先必须要能解析出lrc格式的歌词文本,之前我还...
    99+
    2023-06-17
  • Android实现歌曲播放时歌词同步显示具体思路
    我们需要读取以上歌词文件的每一行转换成成一个个歌词实体: 代码如下: public class LyricObject { public int begintime; // ...
    99+
    2022-06-06
    Android
  • HTML5怎么实现歌词同步的效果
    本篇内容主要讲解“HTML5怎么实现歌词同步的效果 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5怎么实现歌词同步的效果 ”吧! ...
    99+
    2024-04-02
  • 云服务器怎么播放声音设置在桌面显示
    一、 桌面显示设置的基本流程 在桌面创建一个新的桌面,可以通过点击“新建”按钮或使用快捷键Ctrl+N来创建。 在桌面上选择一个桌面背景,可以选择默认的图片、文本、音频文件等,也可以选择自定义图片、文本、音频文件等。 将鼠标移动到桌面上...
    99+
    2023-10-28
    桌面 声音 服务器
  • windows谷歌浏览器怎么同步书签
    今天小编给大家分享一下windows谷歌浏览器怎么同步书签的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。谷歌浏览器同步书签的...
    99+
    2023-07-01
  • android 以音频播放器为例实现通知栏显示通知,并实现切歌、暂停、播放,并实现加载网络图片,并实现关闭第三方APP音频
    首先先给大家看下效果 接下来我们看下具体如何实施 1、首先我们创建一个音频的单例对象,这样能保证每次在播放的的音频是唯一的(类名如:MediaPlayerUtil.java)...
    99+
    2022-06-06
    网络图 图片 关闭 app Android
  • 怎么同时开两个SAP GUI编辑器显示同一段ABAP代码
    本篇内容主要讲解“怎么同时开两个SAP GUI编辑器显示同一段ABAP代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么同时开两个SAP GUI编辑器显示同一段ABAP代码”吧!很多文本编辑...
    99+
    2023-06-04
  • 华为云服务器怎么关闭释放空间设置界面显示
    首先,用户需要了解云服务器的资源使用情况,以便决定如何释放空间以及释放的频率。通常,云服务器可以通过控制面板、资源管理器或管理工具来查看。用户可以根据需要设置云服务器的资源使用情况,以便及时清理不再需要的资源,避免资源浪费。 其次,用户需...
    99+
    2023-10-27
    华为 界面 服务器
  • 华为云服务器怎么关闭释放空间设置界面显示功能
    首先,用户需要了解如何释放存储空间。华为云服务器提供了两种方式来释放存储空间。第一种是通过系统自动管理进行释放,第二种是通过手动管理进行释放。 第一种方式是通过系统自动管理进行释放。用户可以在云服务器控制面板中选择“系统管理”,然后点击“...
    99+
    2023-10-27
    华为 界面 功能
  • Win10显示器驱动程序无法启动怎么办 几个步骤轻松搞定
    随着夏天到了,很多驱动人生Q群用户问小编,Win10经常弹窗“显示器驱动程序无法启动”怎么办?接下来,小编就为大家介绍一下。 图:Win10提示“显示器驱动程序无法启动”...
    99+
    2023-05-23
    Win10 显示器驱动 无法启动
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作