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实现的页内搜索代码
May 23 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
悬浮数字的实现案例
Feb 19 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
在web中js实现类似excel的表格控件
Sep 01 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 Javascript
js拖拽功能实现代码解析
Nov 28 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 Javascript
Vue实现PopupWindow组件详解
Apr 28 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
Javascript 关于基本类型和引用类型的个人理解
Nov 01 Javascript
微信小程序中使用vant框架的具体步骤
Feb 18 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的类 功能齐全的发送邮件类
2006/10/09 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
php获取淘宝分类id示例
2014/01/16 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
js 事件小结 表格区别
2007/08/13 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python实现学校管理系统
2018/01/11 Python
Flask之flask-session的具体使用
2018/07/26 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
python+os根据文件名自动生成文本
2019/03/21 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python批量处理文件或文件夹
2020/07/28 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
Python requests上传文件实现步骤
2020/09/15 Python
java字符串格式化输出实例讲解
2021/01/06 Python
Hotels.com中国区:好订网
2016/08/18 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
大学校运会广播稿
2014/02/03 职场文书
初中家长意见
2015/06/03 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android