700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > html制作自动切换音乐按钮代码 HTML5+JavaScript+CSS实现音乐播放器——难点二:自己

html制作自动切换音乐按钮代码 HTML5+JavaScript+CSS实现音乐播放器——难点二:自己

时间:2018-09-17 07:19:34

相关推荐

html制作自动切换音乐按钮代码 HTML5+JavaScript+CSS实现音乐播放器——难点二:自己

我们都知道HTML5给我们提供了"controls"这个插件,可是这个插件却比较丑,还不能实现上一首下一首的播放,以及进度条的手动改变等功能,那么如何自己设计一个控制音乐播放的控制器呢?下图是我设计的控制器。

1.获取总时间以及当前播放时间的实现:

var oTotal=document.getElementsByClassName("total_time")[0];

window.οnlοad=function () {

oAudio.addEventListener("canplay", function() {

oTotal.innerHTML=format(oAudio.duration); //获取总时间

});

}

这里添加监听器的目的是解决获取到的总时间显示为NaN:NaN,其中还用到一个format函数,因为通过oAudio.duration获得的是以秒为单位的数据,所以要将其转化成分:秒的格式需要一个格式转换函数:

//时间的格式化

function format(t) {

var m=Math.floor(t/60);

var s=Math.floor(t%60);

if(m<=9) //小于10时,在前面填0

m="0"+m;

if(s<=9)

s="0"+s;

return m+":"+s;

}

2.播放、暂停上一首下一首的设置:

此功能的实现比较简单,在JS中只需通过onClick点击事件给audio的src赋值。

HTML代码:

00:00

00:00

这样在JS中需要通过onClick点击事件给audio的src赋值,下面以播放暂停按钮为例。

var oAudio=document.getElementById("audio");

var oPlay=document.getElementByClassName("play")[0];

var clickNum=0; //用于判断是要播放还是暂停

oAudio.setAttribute("src","/audioFile/1.mp3"); //给audio对象设置src属性

oPlay.onclick()=function(){

if(clickNum==0){

oAudio.play(); //播放

oPlay.innerHTML=""; //改变图标

clickNum=1;

}else{

oAudio.pause(); //暂停

oPlay.innerHTML="";

clickNum=0;

}

}

3.手动改变进度的实现:总体思路即通过windows的ev对象获取鼠标的移动位置,判断其距本模块最左端的位置,从而设置颜色、小圆的位置以及currentTime

var oProgress=document.getElementsByClassName("range")[0];

var oMaxProgress=document.getElementsByClassName("progress")[0];

var oProgress_circle=document.getElementsByClassName("circle")[0];

var oCurrent=document.getElementsByClassName("current_time")[0];

oAudio.play();

setInterval(setProgress,1000); //通过定时器设置进度的自动改变

//设置进度的自动移动

function setProgress() {

oCurrent.innerHTML=format(oAudio.currentTime); //设置当前时间的显示

oProgress.style.width=(oAudio.currentTime)/(oAudio.duration)*780+"px"; //780px是总宽度

oProgress_circle.style.left=oProgress.style.width;

}

//可以点击轨道改变进度

oMaxProgress.οnmοusedοwn=function (ev) {

changeProgress(ev);

}

//鼠标拖动小圆改变进度

oProgress_circle.οnmοusedοwn=function (ev) {

document.οnmοusemοve=function (ev) {

changeProgress(ev);

}

document.onmouseup = function () { //当鼠标松开后关闭移动事件和自身事件

document.onmousemove = null;

document.onmouseup = null;

}

return false;

}

function changeProgress(ev){

var ev=ev||event;

var l = ev.clientX - 270; //获取圆距左端的距离

if(l<0){

l=0;

}

else if (l > 780) {

l = 780;

}

oProgress_circle.style.left=l+"px";

oProgress.style.width=l+"px";

oAudio.currentTime=(l/780)*oAudio.duration; //设置当前时间,以改变真正的播放进度

oCurrent.innerHTML=format(oAudio.currentTime); //当前时间

}

4.播放模式的切换:

播放模式有三种:随机播放、单曲循环、列表循环。

(1)随机播放的实现需要用到随机数生成函数,将生成的随机数作为歌曲的一个下标,获取响应的歌曲信息,从而播放。

(2)单曲循环的实现比较简单,只需要将audio对象的loop属性设置成true即可。

(3)列表循环的实现只需要触发下一首的点击事件即可。

在做时发现歌曲播放完毕并不会自动切换到下一首,需要对audio的"ended"属性添加监听事件。

var oBofangModel=document.getElementsByClassName("bofangModel")[0];

var clickNum3=0;

//刚加载,clickNum3=0,不触发点击事件,默认初始为随机播放

if(clickNum3==0){

oAudio.loop=false;

oAudio.addEventListener("ended", suiji, false); //监听函数不能加括号

}

//播放模式的切换

oBofangModel.οnclick=function () {

if(clickNum3==0){

oBofangModel.innerHTML="";

clickNum3=1;

oAudio.loop=false;

// oAudio.removeEventListener("ended",function () {..},false); //匿名取消事件无效

oAudio.removeEventListener("ended",suiji,false);

oAudio.addEventListener("ended", liebiao, false);

}

else if(clickNum3==1){

oBofangModel.innerHTML="";

clickNum3=2;

oAudio.loop=true;

}

else if(clickNum3==2){

oBofangModel.innerHTML="";

clickNum3=0;

if(oAudio!=null){

oAudio.loop=false;

oAudio.removeEventListener("ended",liebiao,false);

oAudio.addEventListener("ended", suiji, false);

}

}

}

//列表循环,触发下一首的点击事件

function liebiao(){

oNext.onclick();

}

//产生随机数,自动播放

function suiji() {

var m=Math.floor(Math.random()*oMusic.length);//产生随机数,范围为0到oMusic.length-1,

playSong(m);

}

//播放当前歌曲

function playSong(index) {

localStorage.setItem("index",index); //存储到本地,方便存取

setInfo();

oAudio.play();

setInterval(setProgress,1000);

}

//设置列表信息

function setInfo() {

var m=parseInt(localStorage.getItem("index"));

oAudio.setAttribute("src",oMusic[m].src);

}

html制作自动切换音乐按钮代码 HTML5+JavaScript+CSS实现音乐播放器——难点二:自己设计一个控制音乐播放的控制器...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。