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中剪贴板兼容性、判断复制成功或失败
Mar 09 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
Aug 14 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
May 14 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
Nov 23 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
Angular 数据请求的实现方法
May 07 Javascript
php中and 和 &amp;&amp;出坑指南
Jul 13 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
ftp类(example.php)
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
简单实现python数独游戏
2018/03/30 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
把pandas转换int型为str型的方法
2019/01/29 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
MYSQL基础面试题
2012/05/13 面试题
金融专业大学生自我评价
2014/01/09 职场文书
超市5.1促销活动
2014/01/15 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
实习生辞职信范文
2015/03/02 职场文书
介绍信范文大全
2015/05/07 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
mysql中between的边界,范围说明
2021/06/08 MySQL
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL