當前位置:
首頁 > 知識 > QQ音樂播放器簡易開發

QQ音樂播放器簡易開發

由於本人喜歡聽音樂,然後突然某次抽筋,想用H5的audio來寫一個模擬qq播放器功能的頁面.說干就干.花了整整4天時間,其中搞歌詞的lrc文件花了不少時間T.T啊.

亮點:

1.歌詞同步:

支持主界面以及副界面的歌詞同步功能,並且當前行高亮展示。

2.多類目切換:

實現4大類目的不同歌單,當前歌曲黑底顯示的功能.

致程序員們:

簡單的一些整理,希望對你們在學習的路上有所幫助。喜歡JAVA的小夥伴,在學習的,學習有困難或者想獲取相關學習資料

3.進度條以及主屏幕拖拽功能:

實現了進度條同步歌曲進度以及拖拽功能,3大界面(光碟界面,歌詞界面,歌單界面)拖拽進行移動的功能.

4.歌曲順序隨機播放:

實現了一鍵隨機播放順序。

5.動態歌詞信息添加:

以封裝為插件,所有歌曲信息動態添加,改歌曲只需要改date內的json文件就可以,data文件格式如下:

經驗:

1.css樣式部分:

可用來做模糊屬性,其實第一次是在做bilibili時發現的.user-select:none;可以禁止用戶選中字.

2.svg部分繪製:

手機部分為svg圖像,由於當時還不會自己手寫svg,所以只能用AI先畫,畫完導出svg格式,也是心疼自己.

3.H5的audio標籤應用:

您的瀏覽器不支持html5的audio標籤" target="_blank" rel="nofollow">網頁鏈接您的瀏覽器不支持html5的audio標籤

4.H5的audio的API文檔運用:

audio.play();播放 audio.pause();暫停 audio.reday()載入完audio.duration播放時間audio.currentTime當前播放時間audio.ended當前歌曲播放結束

5.面向對象式封裝 [ 已寫為插件 ] :

再次用面向對象方式來書寫整個腳本,最近經常用面向對象方式寫js,偶爾用面向過程的方式書寫的時候,感到額外的輕鬆,幾乎不會報錯.老牛已經將整個腳本封裝為了插件,介面在下載源碼後可查閱.有興趣的朋友可以用用看.

6.動態歌單信息與歌單與對應類目表跳轉:

由於處理過幾次data的json格式文件,本次運用起來可以說相當的得心應手,類目表與對應的表之間的index值處理,由於4大類目很多小歌單,小歌單在切換大類目表後取消黑色背景這部分倒是讓我頭疼了好久.

7.運算符前置的運用:

在盒子拖拽部分,老牛第一次用--與++前置,用於先運算再執行.減少了先This._boxIndex++,再代入的坑余代碼.值得注意的是mouseup中有不少執行動作,所以在最後解綁mouseup是必要的。

8.點擊判斷與拖拽判斷:

由於在song list模塊中支持點擊播放,而拖拽為移動,此處我用了滑鼠按下抬起的時間差判斷用戶意向.

9.歌詞分割:

對歌詞lrc文件的處理是本章的難點之一,我將lrc格式以如下方式進行分割,將每句歌詞存入一個lyric數組內,在每次歌曲播放時動態添加入lyricWrapper內,將時間格式存入cal數組內並將分:秒格式轉換為秒的格式,用於給播放時間做計算。

10.歌曲長度,進度條長度以及歌詞同步運算:

首先將當前歌曲長度除60向下取整,歌曲長度的分,在將總長度-分鐘數*60取小數點0位獲取到歌曲長度的秒數,作為歌曲總長度,然後讓顯示器顯示,設一個計時器.每200毫秒進行一次運算,先求當前播放的時間,求法與求總時間類似,進度條長度用當前歌曲時間/歌曲總時間作為百分比值進行顯示,這邊的歌詞同步,我用了grep函數去循環當前秒數在之前處理好的歌詞時間節點數組中去返回出比當前秒數小的時間個數減去1,再用dis存在並且dis不等於-1以及dis不等於上一個dis後再執行歌詞的移動,移動的距離為每條高度,這樣一是避免bug,二則增加運行性能,並不會每200毫秒就做一次無謂的歌詞運動,值得注意的是原先我是用的$.inArray去計算當前時間戳在處理數組中的位子,但是發現用inArray在拖拽進度條之後由於,時間節點的計算需要正好踩到相等點才能有反應,所以會有延遲反應,這裡有意思的是我最先使用addEventListener來監聽audio的ended,然後出現了很多bug,之後我改用if判斷,就解決了,具體原因我也不清楚.

11.冒泡事件

在進度條拖拽計算時,取消背景層的拖拽冒泡事件是必要的!!

想要了解更多Java知識 加入學習群一四四九零一零七六 可以免費學習java還有大量學習乾貨哦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT技術java交流 的精彩文章:

怎樣成為一個JavaWeb開發者?
如何正確理解C語言中默認構造函數
Web前端開發學習路線—初學者必看!
Java 帝國之撥雲見日識回調
Java面試居然有這麼多學問,看看高級程序員面試題是什麼樣的

TAG:IT技術java交流 |

您可能感興趣

音樂播放器推薦一——小評「網易雲音樂」
簡單,好用的一款音樂視頻播放器
用音樂播撒光明
消息稱Spotify可能正在研發車載音樂播放器 支持語音控制
重磅!網易雲音樂與QQ音樂版權合作!
網易雲音樂開始鼓勵原創視頻以及開啟視頻上傳審核
音樂不止一面——飛傲M7音樂播放器
QQ音樂比網易雲音樂差在哪兒?
音樂公司開始搶奪短視頻市場,還是音樂短視頻要集體爆發?
上│因為你,我刪除了酷狗網易雲QQ音樂等軟體
我喜歡在網易雲音樂聽故事,但我用QQ音樂
弄了個在線音樂播放器
網易、蝦米、QQ音樂任意聽
QQ音樂推出音樂故事短片 聚焦節後離家時情感變化
網易雲音樂侵權周杰倫,這回QQ音樂的反應亮了
QQ音樂大面積變灰,網易在後面偷笑!
手機音質差、HiFi播放器貴?飛傲無損音樂播放器M3K測評
曲庫大升級:QQ 音樂正式登陸小愛音箱
老外心中媲美QQ音樂的,不是網易雲音樂
QQ音樂、網易雲音樂和阿里音樂從「廝殺」到「牽手」,音樂版權市場迎來好前景了么?