js制作简单的音乐播放器的示例代码


Posted in Javascript onAugust 28, 2017

一、设计目的:

1、随着现在人民生活质量的提高同样伴随着生活压力的增大,越来越多的人追求越来越多的娱乐,其中一种娱乐方式就是音乐,于是突发奇想,制作一个音乐播放器。

2、主要功能:

1 支持循环自动播放

2 支持图片的旋转

3 支持调整播放的位置,以及调整声音的大小

4 歌词滚动效果

5 每秒显示音乐的播放时间

二 、设计思路:

1、向浏览器中添加背景音乐:

首先应该向网页中添加几首好听的背景音乐。添加音乐有,两种方式可以用一个audo标签,这样应该把音乐的地址存放到一个数组中,第二种方式是,有几首歌就添加几个audo标签,然后获取所有的北京音乐(先添加三首音乐,放到一个数组中);

play1=document.getElementById("play1");
    play2=document.getElementById("play2");
    play3=document.getElementById("play3");
    play=[play1,play2,play3];

1、播放音乐的时候图片惊醒旋转

2、播放音乐的时候滚动条滚动

3、播放音乐的时候是事件随着背景音乐的播放时间增加

图片转动的函数,当音乐播放的时候调用rotate()函数

functionrotate(){
         vardeg=0;
         flag=1;
         timer=setInterval(function(){
           image.style.transform="rotate("+deg+"deg)";
           deg+=5;
           if(deg>360){
            deg=0;
           }
         },30);
       }

清除定时器的函数,当音乐暂停的时候调用imagePause(),图片旋转的定时器被清除掉

functionimagePause(){
         clearInterval(timer);
         flag=0;
       }

2:先定义两个宽度长度大小一样颜色不同的两个div,利用currenttime属性来过去当前的播放的时间,设一个div一开始的长度为零,然后通过当前播放的事件来调整div长度大小就能实现滚动条的效果了。

functionjindutiao(){
         //获取当前歌曲的歌长
         varlenth=play[index].duration;
         timer1=setInterval(function(){
           cur=play[index].currentTime;//获取当前的播放时间
           fillbar.style.width=""+parseFloat(cur/lenth)*300+"px";
         },50)
       }

将进度条滚动的定时器清除掉,然后div的长度还原为0;

function reducejindutiao(){
         clearInterval(timer1);
         fillbar.style.width="0";
       }

3,背景音乐的播放时间也是利用currenttime来随时改变,不过应该注意currenttime的计时单位为秒

function addtime(){
         timer2=setInterval(function(){
           cur=parseInt(play[index].currentTime);//秒数
           vartemp=cur;
           minute=parseInt(temp/60);
           if(cur%60<10){
            time.innerHTML=""+minute+":0"+cur%60+"";
           }else{
            time.innerHTML=""+minute+":"+cur%60+"";
           }
         },1000);
       }

二、实现通过进度条来调整歌曲的播放位置:

首先应该理清一下逻辑:当点击进度条的时候,滚动条的宽度应该跟鼠标的offsetX一样长,然后根据进度条的长度来调整听该显示的时间

(1) 给滚动条的div添加一个事件,当滚动条长度变化的时候歌曲的当前播放的时间调整,300是滚动条的总长度

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) 改变声音大小的滚动条,跟改变播放时间类似,利用volume属性(值为零到一)

function changeVolume(e){
         var x=e.offsetX+20;
         play[index].volume=parseFloat(x/200)*1;
         //改变按钮的位置
         volume3.style.left=""+x+"px";
       }

(3)随机跟顺序播放音乐

顺序播放音乐的时候,直接index++当index的范围超过歌曲的长度的时候,index=0重新开始。随机播放的函数类似,当歌曲播放完毕的时候,随机产生一个0到play.length的数字就可以了

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);
       }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
查询绑定数据岛的表格中的文本并修改显示方式的js代码
Dec 15 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
jQuery实现当前页面标签高亮显示的方法
Mar 10 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
JavaScript实现的经典文件树菜单效果
Sep 08 Javascript
Bootstrap每天必学之栅格系统(布局)
Nov 25 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
Mar 13 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
H5实现手机拍照和选择上传功能
Dec 18 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
NestJs使用Mongoose对MongoDB操作的方法
Feb 22 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 #Javascript
jQuery菜单实例(全选,反选,取消)
Aug 28 #jQuery
[js高手之路]原型式继承与寄生式继承详解
Aug 28 #Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 #Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
Aug 28 #Javascript
js排序与重组的实例讲解
Aug 28 #Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 #Javascript
You might like
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
初识Node.js
2014/09/03 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
python和ruby,我选谁?
2017/09/13 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
解释一下钝化(Swap out)
2016/12/26 面试题
小学教研工作制度
2014/01/15 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
家长对孩子的评语
2014/04/18 职场文书
大学生入党自传2015
2015/06/26 职场文书