js制作簡(jiǎn)單的音樂(lè)播放器的示例代碼
一、設(shè)計(jì)目的:
1、隨著現(xiàn)在人民生活質(zhì)量的提高同樣伴隨著生活壓力的增大,越來(lái)越多的人追求越來(lái)越多的娛樂(lè),其中一種娛樂(lè)方式就是音樂(lè),于是突發(fā)奇想,制作一個(gè)音樂(lè)播放器。
2、主要功能:
1 支持循環(huán)自動(dòng)播放
2 支持圖片的旋轉(zhuǎn)
3 支持調(diào)整播放的位置,以及調(diào)整聲音的大小
4 歌詞滾動(dòng)效果
5 每秒顯示音樂(lè)的播放時(shí)間
二 、設(shè)計(jì)思路:
1、向?yàn)g覽器中添加背景音樂(lè):
首先應(yīng)該向網(wǎng)頁(yè)中添加幾首好聽(tīng)的背景音樂(lè)。添加音樂(lè)有,兩種方式可以用一個(gè)audo標(biāo)簽,這樣應(yīng)該把音樂(lè)的地址存放到一個(gè)數(shù)組中,第二種方式是,有幾首歌就添加幾個(gè)audo標(biāo)簽,然后獲取所有的北京音樂(lè)(先添加三首音樂(lè),放到一個(gè)數(shù)組中);
play1=document.getElementById("play1");
play2=document.getElementById("play2");
play3=document.getElementById("play3");
play=[play1,play2,play3];
1、播放音樂(lè)的時(shí)候圖片驚醒旋轉(zhuǎn)
2、播放音樂(lè)的時(shí)候滾動(dòng)條滾動(dòng)
3、播放音樂(lè)的時(shí)候是事件隨著背景音樂(lè)的播放時(shí)間增加
圖片轉(zhuǎn)動(dòng)的函數(shù),當(dāng)音樂(lè)播放的時(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)音樂(lè)暫停的時(shí)候調(diào)用imagePause(),圖片旋轉(zhuǎn)的定時(shí)器被清除掉
functionimagePause(){
clearInterval(timer);
flag=0;
}
2:先定義兩個(gè)寬度長(zhǎng)度大小一樣顏色不同的兩個(gè)div,利用currenttime屬性來(lái)過(guò)去當(dāng)前的播放的時(shí)間,設(shè)一個(gè)div一開(kāi)始的長(zhǎng)度為零,然后通過(guò)當(dāng)前播放的事件來(lái)調(diào)整div長(zhǎng)度大小就能實(shí)現(xiàn)滾動(dòng)條的效果了。
functionjindutiao(){
//獲取當(dāng)前歌曲的歌長(zhǎ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的長(zhǎng)度還原為0;
function reducejindutiao(){
clearInterval(timer1);
fillbar.style.width="0";
}
3,背景音樂(lè)的播放時(shí)間也是利用currenttime來(lái)隨時(shí)改變,不過(guò)應(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)通過(guò)進(jìn)度條來(lái)調(diào)整歌曲的播放位置:
首先應(yīng)該理清一下邏輯:當(dāng)點(diǎn)擊進(jìn)度條的時(shí)候,滾動(dòng)條的寬度應(yīng)該跟鼠標(biāo)的offsetX一樣長(zhǎng),然后根據(jù)進(jìn)度條的長(zhǎng)度來(lái)調(diào)整聽(tīng)該顯示的時(shí)間
(1) 給滾動(dòng)條的div添加一個(gè)事件,當(dāng)滾動(dòng)條長(zhǎng)度變化的時(shí)候歌曲的當(dāng)前播放的時(shí)間調(diào)整,300是滾動(dòng)條的總長(zhǎ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í)間類(lèi)似,利用volume屬性(值為零到一)
function changeVolume(e){
var x=e.offsetX+20;
play[index].volume=parseFloat(x/200)*1;
//改變按鈕的位置
volume3.style.left=""+x+"px";
}
(3)隨機(jī)跟順序播放音樂(lè)
順序播放音樂(lè)的時(shí)候,直接index++當(dāng)index的范圍超過(guò)歌曲的長(zhǎng)度的時(shí)候,index=0重新開(kāi)始。隨機(jī)播放的函數(shù)類(lèi)似,當(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);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果實(shí)例
大家應(yīng)該都知道,Swiper是純javascript打造的滑動(dòng)特效插件,面向手機(jī)、平板電腦等移動(dòng)終端,下面這篇文章主要給大家介紹了關(guān)于Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果的相關(guān)資料,需要的朋友可以參考下2022-10-10
圖片連續(xù)滾動(dòng)代碼[兼容IE/firefox]
網(wǎng)上有不少的連續(xù)滾動(dòng)實(shí)現(xiàn)代碼,下面的這個(gè)是兼容性不錯(cuò)的代碼。大家可以測(cè)試下。2009-06-06
javascript動(dòng)態(tài)加載實(shí)現(xiàn)方法一
這兩天,沒(méi)什么太多的事情,好吧,我承認(rèn),是我這兩天不想做公司的項(xiàng)目,因?yàn)槲彝话l(fā)奇想,其實(shí)也不算突發(fā)奇想,算是對(duì)以前的想法的實(shí)現(xiàn),就是把JS當(dāng)做Java來(lái)寫(xiě)2012-08-08
JavaScript折半查找(二分查找)算法原理與實(shí)現(xiàn)方法示例
這篇文章主要介紹了JavaScript折半查找(二分查找)算法原理與實(shí)現(xiàn)方法,結(jié)合具體問(wèn)題描述了折半查找算法的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08
javascript將list轉(zhuǎn)換成樹(shù)狀結(jié)構(gòu)的實(shí)例
下面小編就為大家?guī)?lái)一篇javascript將list轉(zhuǎn)換成樹(shù)狀結(jié)構(gòu)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

