js制作簡單的音樂播放器的示例代碼
一、設(shè)計(jì)目的:
1、隨著現(xiàn)在人民生活質(zhì)量的提高同樣伴隨著生活壓力的增大,越來越多的人追求越來越多的娛樂,其中一種娛樂方式就是音樂,于是突發(fā)奇想,制作一個(gè)音樂播放器。
2、主要功能:
1 支持循環(huán)自動(dòng)播放
2 支持圖片的旋轉(zhuǎn)
3 支持調(diào)整播放的位置,以及調(diào)整聲音的大小
4 歌詞滾動(dòng)效果
5 每秒顯示音樂的播放時(shí)間
二 、設(shè)計(jì)思路:
1、向?yàn)g覽器中添加背景音樂:
首先應(yīng)該向網(wǎng)頁中添加幾首好聽的背景音樂。添加音樂有,兩種方式可以用一個(gè)audo標(biāo)簽,這樣應(yīng)該把音樂的地址存放到一個(gè)數(shù)組中,第二種方式是,有幾首歌就添加幾個(gè)audo標(biāo)簽,然后獲取所有的北京音樂(先添加三首音樂,放到一個(gè)數(shù)組中);
play1=document.getElementById("play1"); play2=document.getElementById("play2"); play3=document.getElementById("play3"); play=[play1,play2,play3];
1、播放音樂的時(shí)候圖片驚醒旋轉(zhuǎn)
2、播放音樂的時(shí)候滾動(dòng)條滾動(dòng)
3、播放音樂的時(shí)候是事件隨著背景音樂的播放時(shí)間增加
圖片轉(zhuǎn)動(dòng)的函數(shù),當(dāng)音樂播放的時(shí)候調(diào)用rotate()函數(shù)
functionrotate(){ vardeg=0; flag=1; timer=setInterval(function(){ image.style.transform="rotate("+deg+"deg)"; deg+=5; if(deg>360){ deg=0; } },30); }
清除定時(shí)器的函數(shù),當(dāng)音樂暫停的時(shí)候調(diào)用imagePause(),圖片旋轉(zhuǎn)的定時(shí)器被清除掉
functionimagePause(){ clearInterval(timer); flag=0; }
2:先定義兩個(gè)寬度長度大小一樣顏色不同的兩個(gè)div,利用currenttime屬性來過去當(dāng)前的播放的時(shí)間,設(shè)一個(gè)div一開始的長度為零,然后通過當(dāng)前播放的事件來調(diào)整div長度大小就能實(shí)現(xiàn)滾動(dòng)條的效果了。
functionjindutiao(){ //獲取當(dāng)前歌曲的歌長 varlenth=play[index].duration; timer1=setInterval(function(){ cur=play[index].currentTime;//獲取當(dāng)前的播放時(shí)間 fillbar.style.width=""+parseFloat(cur/lenth)*300+"px"; },50) }
將進(jìn)度條滾動(dòng)的定時(shí)器清除掉,然后div的長度還原為0;
function reducejindutiao(){ clearInterval(timer1); fillbar.style.width="0"; }
3,背景音樂的播放時(shí)間也是利用currenttime來隨時(shí)改變,不過應(yīng)該注意currenttime的計(jì)時(shí)單位為秒
function addtime(){ timer2=setInterval(function(){ cur=parseInt(play[index].currentTime);//秒數(shù) vartemp=cur; minute=parseInt(temp/60); if(cur%60<10){ time.innerHTML=""+minute+":0"+cur%60+""; }else{ time.innerHTML=""+minute+":"+cur%60+""; } },1000); }
二、實(shí)現(xiàn)通過進(jìn)度條來調(diào)整歌曲的播放位置:
首先應(yīng)該理清一下邏輯:當(dāng)點(diǎn)擊進(jìn)度條的時(shí)候,滾動(dòng)條的寬度應(yīng)該跟鼠標(biāo)的offsetX一樣長,然后根據(jù)進(jìn)度條的長度來調(diào)整聽該顯示的時(shí)間
(1) 給滾動(dòng)條的div添加一個(gè)事件,當(dāng)滾動(dòng)條長度變化的時(shí)候歌曲的當(dāng)前播放的時(shí)間調(diào)整,300是滾動(dòng)條的總長度
function adjust(e){ var bar=e.target; var x=e.offsetX; varlenth=play[index].duration; fillbar.style.width=x+"px"; play[index].currentTime=""+parseInt(x*lenth/300)+""; play[index].play(); }
(2) 改變聲音大小的滾動(dòng)條,跟改變播放時(shí)間類似,利用volume屬性(值為零到一)
function changeVolume(e){ var x=e.offsetX+20; play[index].volume=parseFloat(x/200)*1; //改變按鈕的位置 volume3.style.left=""+x+"px"; }
(3)隨機(jī)跟順序播放音樂
順序播放音樂的時(shí)候,直接index++當(dāng)index的范圍超過歌曲的長度的時(shí)候,index=0重新開始。隨機(jī)播放的函數(shù)類似,當(dāng)歌曲播放完畢的時(shí)候,隨機(jī)產(chǎn)生一個(gè)0到play.length的數(shù)字就可以了
functionshunxu(e){ var img=e.target; img1.style.border=""; img.style.border="1pxsolid red"; clearInterval(suijiplay); shunxuplay=setInterval(function(){ if(play[index].ended){ add(); } },1000); }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript對(duì)象和字串之間的轉(zhuǎn)換實(shí)例探討
從對(duì)象的格式可以看出,如果字串的格式定義成 json 格式的, 就可以直接轉(zhuǎn)換為obj了,感興趣的朋友可以參考下哈2013-04-04Underscore.js 的模板功能介紹與應(yīng)用
Underscore是一個(gè)非常實(shí)用的JavaScript庫,提供許多編程時(shí)需要的功能的支持,他在不擴(kuò)展任何JavaScript的原生對(duì)象的情況下提供很多實(shí)用的功能,需要了解的朋友可以詳細(xì)參考下2012-12-12異步動(dòng)態(tài)加載JS并運(yùn)行(示例代碼)
這篇文章主要是對(duì)異步動(dòng)態(tài)加載JS并運(yùn)行的示例代碼進(jìn)行了介紹。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08JS數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu)(示例詳解)
在開發(fā)過程中經(jīng)常會(huì)出現(xiàn)接口返回整個(gè)數(shù)組,我們需要將數(shù)組進(jìn)行二次處理,這篇文章主要介紹了js?數(shù)組按指定字段轉(zhuǎn)map-list結(jié)構(gòu),需要的朋友可以參考下2023-11-11JS基于FileSaver.js插件實(shí)現(xiàn)文件保存功能示例
這篇文章主要介紹了JS基于FileSaver.js插件實(shí)現(xiàn)文件保存功能,結(jié)合實(shí)例形式演示了FileSaver.js插件的具體使用技巧,需要的朋友可以參考下2016-12-12讓innerText在firefox火狐和IE瀏覽器都能用的寫法
下面的代碼主要是用來解決firefox瀏覽器不支持innerText的問題,需要的朋友可以參考下。2011-05-05