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操作iframe的一些方法介绍
Jun 25 Javascript
深入剖析JavaScript中的枚举功能
Mar 06 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
javascript中的遍历for in 以及with的用法
Dec 22 Javascript
js实现缓冲运动效果的方法
Apr 10 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
jsTree使用记录实例
Dec 01 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
Feb 12 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
Vue多选列表组件深入详解
Mar 02 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
php解析json数据实例
2014/08/19 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
js有关元素内容操作小结
2011/12/20 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
详解vue渲染函数render的使用
2017/12/12 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
Python读写ini文件的方法
2015/05/28 Python
win与linux系统中python requests 安装
2016/12/04 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python绘制雷达图实例讲解
2021/01/03 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
自荐信模版
2013/10/24 职场文书
教师队伍管理制度
2014/01/14 职场文书
机械个人求职信范文
2014/01/24 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
欢迎词范文
2015/01/27 职场文书
2015年加油站工作总结
2015/05/13 职场文书
运动会通讯稿50字
2015/07/20 职场文书
学校财务管理制度
2015/08/04 职场文书
《西门豹》教学反思
2016/02/23 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Python中22个万用公式的小结
2021/07/21 Python