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 相关文章推荐
JavaScript面象对象设计
Apr 28 Javascript
window.ActiveXObject使用说明
Nov 08 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
angularJS Provider、factory、service详解及实例代码
Sep 21 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
浅谈关于.vue文件中style的scoped属性
Aug 19 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
Webpack按需加载打包chunk命名的方法
Sep 22 Javascript
原生js实现自定义消息提示框
Nov 19 Javascript
详解前端任务构建利器Gulp.js使用指南
Apr 30 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
无线电的诞生过程
2021/03/01 无线电
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
PHP 开源AJAX框架14种
2009/08/24 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php导入模块文件分享
2015/03/17 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
动态加载js的几种方法
2006/10/23 Javascript
document.open() 与 document.write()的区别
2007/08/13 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
Python中使用PDB库调试程序
2015/04/05 Python
python 获取url中的参数列表实例
2018/12/18 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
python机器学习库xgboost的使用
2020/01/20 Python
Python定义一个Actor任务
2020/07/29 Python
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
Servlet的生命周期
2013/08/25 面试题
给面试官的感谢信
2014/02/01 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
销售人员工作自我评价
2014/09/21 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书