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 相关文章推荐
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
拖动时防止选中
Feb 03 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
Mar 09 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
vue配置文件实现代理v2版本的方法
Jun 21 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
[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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
理解javascript异步编程
2016/01/27 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
弄虚作假心得体会
2014/09/10 职场文书
入股协议书范本
2014/11/01 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
redis实现的四种常见限流策略
2021/06/18 Redis