iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Flex播放器如何同步显示歌词
  • 187
分享到

Flex播放器如何同步显示歌词

2023-06-17 15:06:41 187人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关Flex播放器如何同步显示歌词,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex播放器同步显示歌词播放歌曲时要同步显示歌词,首先必须要能解析出lrc格式的歌词文本,之前我还

这篇文章将为大家详细讲解有关Flex播放器如何同步显示歌词,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Flex播放器同步显示歌词

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

Java代码

加载歌词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;}}}   /加载歌词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方法就能得到歌曲所有的时间段显示的歌词拉。

关于“Flex播放器如何同步显示歌词”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Flex播放器如何同步显示歌词

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Flex播放器如何同步显示歌词
    这篇文章将为大家详细讲解有关Flex播放器如何同步显示歌词,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex播放器同步显示歌词播放歌曲时要同步显示歌词,首先必须要能解析出lrc格式的歌词文本,之前我还...
    99+
    2023-06-17
  • Flex播放器怎么同步显示歌词
    这篇文章主要为大家展示了“Flex播放器怎么同步显示歌词”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex播放器怎么同步显示歌词”这篇文章吧。Flex播放器同步显示歌词在听完S.H.E的你最...
    99+
    2023-06-17
  • 电脑显示无法播放该文件如何解决
    出现电脑显示无法播放该文件的问题,可能是由于以下几个原因导致的:1. 缺少相关的解码器:某些文件格式需要特定的解码器才能播放,如果你...
    99+
    2023-09-09
    电脑
  • windows谷歌浏览器video自动播放无效如何解决
    这篇文章主要介绍“windows谷歌浏览器video自动播放无效如何解决”,在日常操作中,相信很多人在windows谷歌浏览器video自动播放无效如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win...
    99+
    2023-07-01
  • java同步器AQS架构如何释放锁和同步队列
    这篇文章主要为大家展示了“java同步器AQS架构如何释放锁和同步队列”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java同步器AQS架构如何释放锁和同步队列”这篇文章吧。引导语AQS 的内容...
    99+
    2023-06-29
  • HTML5如何实现根据不同浏览器播放不同格式
    HTML5如何实现根据不同浏览器播放不同格式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通过Html5的Video标签语法,我们可以快速的在...
    99+
    2024-04-02
  • dreamweaver如何实现鼠标放在不同的位置显示不同的图片
    这篇文章将为大家详细讲解有关dreamweaver如何实现鼠标放在不同的位置显示不同的图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先用ps或者其他软件将几张图片的大小p成一样的。比如笔者把三张图片...
    99+
    2023-06-08
  • windows谷歌浏览器显示不安全如何解决
    这篇文章主要介绍“windows谷歌浏览器显示不安全如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows谷歌浏览器显示不安全如何解决”文章能帮助大家解决问题。谷歌浏览器显示不安全解决...
    99+
    2023-07-01
  • 如何把云服务器放到桌面显示
    要将云服务器放到桌面显示,需要以下步骤: 安装云服务器:首先需要在终端中安装“云服务器”,并在“控制面板”中添加用户账户。 配置云服务器:根据所需的容量和性能,在“云服务器”中设置合适的存储空间,例如存储容量和存储大小、可用存储数量等。...
    99+
    2023-10-26
    桌面 服务器
  • windows谷歌浏览器标签页不显示如何解决
    本文小编为大家详细介绍“windows谷歌浏览器标签页不显示如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows谷歌浏览器标签页不显示如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。谷歌浏...
    99+
    2023-07-01
  • 如何把云服务器放到桌面上显示
    要将云服务器放到桌面上,您需要将其连接到计算机或其他设备上,并打开浏览器(通常是计算机)并找到云服务器的主页,然后按住Ctrl键并向上滚动鼠标滚轮以选择云服务器。 接下来,您需要选择要放置云服务器的位置(通常是文件夹或文件),这将确保云...
    99+
    2023-10-27
    服务器 桌面上
  • 如何把云服务器放到桌面显示图标
    要将云服务器放到桌面,可以使用以下步骤: 打开服务器管理器。在这个窗口中,您可以找到服务器的基本信息。 找到“服务器组”和“本地计算机”选项。选择“本地计算机”。 右键单击服务器名称,选择“创建服务器”。 在弹出的向导中,单击“下一步...
    99+
    2023-10-27
    图标 桌面 服务器
  • 如何把云服务器放到桌面显示出来
    选择适合的操作系统和云服务器软件 在选择适合的云服务器操作系统和云服务器软件时,应该考虑到应用程序的要求,比如运行速度、存储空间、可靠性、安全性等方面。例如,如果你要运行一个需要大量存储空间的应用程序,那么使用云服务器更适合。如果你的...
    99+
    2023-10-28
    桌面 服务器
  • 如何把云服务器放到桌面上面显示
    要将云服务器放到桌面上显示,需要进行以下几个步骤: 选择合适的云服务器平台 首先需要选择一个适合自己业务需求的云服务器平台。常见的云服务器平台包括Amazon Web Services(AWS)、Microsoft Azure、Goo...
    99+
    2023-10-28
    桌面 服务器
  • 如何把云服务器放到桌面显示文件
    登录云服务器管理控制台,打开任务管理器。 选择“任务计划程序”,进入任务管理器界面。 点击“新建任务”,创建一个新的任务。 输入任务名称和描述,保存任务。 点击“任务属性”,在“桌面”选项卡中,选择“文件夹”,然后选择“显示”。 在“桌面...
    99+
    2023-10-27
    桌面 服务器 文件
  • Vue 开发音乐播放器如何实现歌手页右侧快速入口功能
    小编给大家分享一下Vue 开发音乐播放器如何实现歌手页右侧快速入口功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!快速入口的列...
    99+
    2024-04-02
  • 如何把云服务器放到桌面上面去显示
    在将云服务器放到桌面上面去显示时,可以采取以下步骤: 配置云服务器:首先需要将云服务器的操作系统和应用程序升级到最新版本。这可以通过安装云服务器管理工具来完成。云服务器管理工具可以让用户轻松地进行系统更新、安全漏洞修复、系统文件备份等操...
    99+
    2023-10-27
    桌面 服务器
  • 如何把云服务器放到桌面显示文件夹
    要将云服务器放到桌面,可以使用以下步骤: 打开服务器管理器,在弹出的窗口中,找到“文件和打印机”选项并点击。 在弹出的菜单中,点击“添加新的云服务器”。 在新窗口中,选择云服务器的类型为“本地服务器”。 在新的窗口中,可以看到服务器的主...
    99+
    2023-10-27
    文件夹 桌面 服务器
  • 如何把云服务器放到桌面上面显示文件
    将云服务器放在桌面上可以实现许多不同的功能。下面是其中一些可能的应用: 数据备份和恢复:将重要的数据存储在云服务器上,可以在需要时快速恢复数据,而不必担心数据丢失或损坏。此外,云服务器还提供了自动备份和同步功能,使用户可以轻松地管理和保...
    99+
    2023-10-27
    桌面 服务器 文件
  • 如何使用css实现图片在页面上以相同等比例显示缩放
    这篇文章给大家分享的是有关如何使用css实现图片在页面上以相同等比例显示缩放的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   css图片等比例显示具体代码示例如下:   &...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作