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 相关文章推荐
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
纯js简单日历实现代码
Oct 05 Javascript
js图片处理示例代码
May 12 Javascript
Node.js中的模块机制学习笔记
Nov 04 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
详解js中call与apply关键字的作用
Nov 21 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
vue 解决异步数据更新问题
Oct 29 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
工作中常用js功能汇总
Nov 07 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
坏狼php学习 计数器实例代码
2008/06/15 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
收集的10个免费的jQuery相册
2011/02/26 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
应届生护士求职信
2013/11/01 职场文书
大学生毕业鉴定
2014/01/31 职场文书
2014年创卫实施方案
2014/02/18 职场文书
防溺水主题班会教案
2015/08/12 职场文书
工伤调解协议书
2016/03/21 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python