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 相关文章推荐
Google AJAX 搜索 API实现代码
Nov 17 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
Mar 26 Javascript
jQuery filter函数使用方法
May 19 Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
Dec 17 Javascript
js实现九宫格的随机颜色跳转
Feb 19 Javascript
深入理解Angularjs 脏值检测
Oct 12 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 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 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
joomla组件开发入门教程
2016/05/04 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
window.onload使用指南
2015/09/13 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
Python实现字符串格式化输出的方法详解
2017/09/20 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python PIL图片添加字体的例子
2019/08/22 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
审核会计岗位职责
2013/11/08 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
请假条范文大全
2014/04/10 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
清洁员岗位职责
2015/02/15 职场文书
闪闪的红星观后感
2015/06/08 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技
MySQL常用慢查询分析工具详解
2022/08/14 MySQL