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 flash下fromCharCode和charCodeAt方法使用说明
Jan 12 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
May 15 Javascript
jQuery javaScript捕获回车事件(示例代码)
Nov 07 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
jquery实现可关闭的倒计时广告特效代码
Sep 02 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
JavaScript时间日期操作实例小结【5个示例】
Dec 22 Javascript
使用vuepress搭建静态博客的示例代码
Feb 14 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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实现读取内存顺序号
2015/03/29 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
python操作gmail实例
2015/01/14 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
python面试题小结附答案实例代码
2019/04/11 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
《燕子》教学反思
2014/02/18 职场文书
党课心得体会范文
2014/09/09 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android