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维吉尼亚密码算法实现代码
Nov 09 Javascript
javascript的数据类型、字面量、变量介绍
May 23 Javascript
javascript自然分类法算法实现代码
Oct 11 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
js中let和var定义变量的区别
Feb 08 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
Apr 30 jQuery
微信公众号网页分享功能开发的示例代码
May 27 Javascript
js通过canvas生成图片缩略图
Oct 02 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
php生成随机密码的三种方法小结
2010/09/04 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
php源码的安装方法和实例
2019/09/26 PHP
简单的JS多重继承示例
2008/03/13 Javascript
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
为什么相对PHP黑python的更少
2020/06/21 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
学期自我鉴定范文
2013/10/01 职场文书
大学生自我鉴定范文
2013/12/28 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle