在KTV點歌系統中我們根據需求獲取到歌手的歌曲信息,點擊歌手的歌曲將其添加到一點歌曲列表中看似簡單的一個操作其實涉及很多內容,這也是寫這篇Blog的目的—分析歌曲播放的原理。
原理分析
我們應該清楚,在KTV中點歌后會將歌曲添加到已點列表中,已點列表,這時候播放器會根據已點列表里的歌曲順序去播放歌曲。具體如何實現該功能,我們一步步來分析。
- 首先我們應該創建一個播放列表類,用來存儲已點列表,以及已點列表操作相對應的方法。
創建Song類來保存歌曲對象,
枚舉類SongPlayState歌曲的播放狀態,
創建PlayList類用來保存播放列表以及播放列表操作相對應得方法
(這里我們將PlayList類中的SongIndex歌曲下標以及SongList歌曲列表設為靜態,播放列表的操作有添加歌曲AddSong(),獲取播放歌曲GetPlaySong(),和獲取到下一首歌MoveNext())
這里我們使用了對象數組,其實使用泛型集合更好.在這也不做過多糾結了
我們獲取到要點的歌,先創建了這首歌曲的對象,然后將它添加到播放列表中,同時在已點歌曲中顯示
(添加歌曲到已點列表,並注明該歌曲的播放狀態)
(添加歌曲到播放類表)
2.我們在已點歌曲列表中,點擊歌曲,歌曲播放,做的就是獲取到歌曲的文件路徑並將其傳給Player
我們需要在住界面窗體中設置屬性Song為當前播放的歌曲,歌曲列表的播放,我們需要使用Timer空間,每隔一秒對播放器的狀態進行(使用Timer的Tick事件)
之后再調用PlayList的GetSong()方法,
同時增加判斷是否存在下一首,以及獲取上一曲歌曲名和下一曲歌曲名
今天這篇Blog有點趕時間了,可能會存在很多問題,我認為基本上已經囊括了歌曲播放功能的關鍵。
今天只給KTV添加了歌曲播放功能,之后的幾天里會對KTV做進一步的完善!