欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Flex播放器如何同步顯示歌詞

這篇文章將為大家詳細(xì)講解有關(guān)Flex播放器如何同步顯示歌詞,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到凌云網(wǎng)站設(shè)計(jì)與凌云網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋凌云地區(qū)。

Flex播放器同步顯示歌詞

播放歌曲時(shí)要同步顯示歌詞,首先必須要能解析出lrc格式的歌詞文本,之前我還準(zhǔn)備直接在網(wǎng)上匹配下載對(duì)應(yīng)歌詞,打開我機(jī)器的千千靜音在線匹配歌詞,然后用HTTPAnalyzerStdV監(jiān)視所有的http請(qǐng)求,發(fā)現(xiàn)它是請(qǐng)求這個(gè)ttlrcct.qianqian.com網(wǎng)站下載歌詞,本來還是直接套用千千靜音服務(wù)器下載歌詞,但是它的url參數(shù)全部加密了。后來又看了下酷狗音樂,它里面下載歌詞我都監(jiān)視不請(qǐng)求,考慮到就算我能在線找到下載歌詞的url地址,flash里發(fā)送遠(yuǎn)程請(qǐng)求也會(huì)有安全殺箱問題,所以最終放棄直接在網(wǎng)絡(luò)上下載歌詞的辦法,還是全部上傳到我網(wǎng)站上去。lrc歌詞其實(shí)就是一個(gè)文本格式的文件,在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文本字符串,這時(shí)候我們需要對(duì)字符串進(jìn)行處理,把它轉(zhuǎn)換成一個(gè)Array數(shù)組,函數(shù)方法如下:

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數(shù)組為多圍數(shù)組,數(shù)組里的每一項(xiàng)是為一個(gè)二圍數(shù)組,item[0]為當(dāng)前秒數(shù),item[1]為該秒顯示的歌詞(句),比如item[0]=歌曲名:你最近還好嗎、item[5]=演唱:S.H.E,就是代表第0秒顯示歌曲名:你最近還好嗎,而從第5秒起則顯示演唱:S.H.E,這樣通過getLRCArray方法就能得到歌曲所有的時(shí)間段顯示的歌詞拉。本例中把所有歌詞放在一個(gè)editable="false"不可修改的mx:TextArea文本域內(nèi)。

歌詞同步顯示的問題

歌詞能全部加載顯示了,問題是怎么隨著Flex播放器歌曲的播放而高亮顯示當(dāng)前行歌詞呢?不過還好Flex提供一個(gè)TextRange能對(duì)TextArea內(nèi)文本進(jìn)行選擇性的處理,你只需要設(shè)置beginIndex和endIndex就能自動(dòng)匹配到TextArea中間區(qū)域的文本,我這里只是簡(jiǎn)單的改變了一下顏色,不過我們從TextArea中找某一個(gè)句歌詞索引的時(shí)候需要注意歌詞有很多是重復(fù)的,所以我們需要用一個(gè)變量保存當(dāng)前歌詞播放位置索引startIndexOf,以確保我們高亮選擇到的歌詞是正確的。同時(shí)將TextArea滾動(dòng)條設(shè)置到對(duì)應(yīng)的高度,主要的代碼如下:

//同步顯示歌詞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";}//設(shè)置滾動(dòng)條位置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文本字符串,這時(shí)候我們需要對(duì)字符串進(jìn)行處理,把它轉(zhuǎn)換成一個(gè)Array數(shù)組,函數(shù)方法如下:

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數(shù)組為多圍數(shù)組,數(shù)組里的每一項(xiàng)是為一個(gè)二圍數(shù)組,item[0]為當(dāng)前秒數(shù),item[1]為該秒顯示的歌詞(句),比如item[0]=歌曲名:你最近還好嗎、item[5]=演唱:S.H.E,就是代表第0秒顯示歌曲名:你最近還好嗎,而從第5秒起則顯示演唱:S.H.E,這樣通過getLRCArray方法就能得到歌曲所有的時(shí)間段顯示的歌詞拉。

關(guān)于“Flex播放器如何同步顯示歌詞”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

分享文章:Flex播放器如何同步顯示歌詞
瀏覽路徑:http://aaarwkj.com/article26/jjigjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、搜索引擎優(yōu)化、網(wǎng)站營銷定制開發(fā)、App設(shè)計(jì)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
九九热视频这里是精品| 久久这里只有精品伊人网| 日韩 在线一区二区| 91在线免费观看国产精品| 蜜桃久久国产精品一区二区| 精品中文人妻中文字幕| 91精品国产综合久蜜臂| 亚洲综合日韩精品在线| 成人午夜在线三级内射| 国产一区二区av免费| 少妇欧美日韩精品在线观看| 91黑丝国产在线播放| 伊人久久九九精品综合| 久久偷拍女生厕所尿尿| 亚洲老熟女老妇老女人| 中文字幕乱码亚州精品一区| 爽妇网亚洲一区二区三区| 午夜视频在线观看免费高清国产 | 国产精品重口调教系列| 中出亚洲精品日韩在线视频| 日本在线不卡二区三区| 久久成人综合亚洲精品欧美| 日韩欧美精品久久黄| 亚洲最新精品一区二区| 亚洲欧美日韩一区91| 日本av东京热在线播放| 日韩成人中文字幕在线视频| 欧美大尺度影片在线观看| 亚洲一区二区三区av电影| 日韩一区二区三区91| 91精品手机在线观看| 久久欧精品欧美日韩精品| 国产一区二区爽爽爽视频| 亚洲欧美国产日韩天堂区| 日本一区二区久久人妻高清| 尤物资源视频在线观看| dy888午夜福利精品国产97| 日韩专区欧美二区国产| 欧美三级欧美一级视频看| 日韩av在线黄色免费大全| 日本写真视频一区二区三区|