首页 web前端 js教程 原生JS做出一个音乐播放器

原生JS做出一个音乐播放器

Apr 17, 2018 pm 02:26 PM
javascript 播放器 音乐

这次给大家带来原生JS做出一个音乐播放器,原生JS做出一个音乐播放器的注意事项有哪些,下面就是实战案例,一起来看一下。

前  言         

最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~

主要功能:

       1、支持循环、随机播放

  2、在播放的同时支持图片的旋转

       3、支持点击进度条调整播放的位置,以及调整音量

       4、显示音乐的播放时间

       5、支持切歌:上一首、下一首、点击歌名切歌;暂停播放等~

添加音乐有两种方式:

①可以用一个audo标签,这样应该把音乐的地址存放到一个数组中;

②第二种方式是,有几首歌就添加几个audo标签,然后获取所有的背景音乐(示例中我们先添加三首音乐,放到一个数组中,当然,大家可以挑选自己喜欢的任何歌曲)。

<audio id="play1">
   <source src="auto/旅行.mp3"></source>
</audio>
<audio id="play2">
   <source src="auto/薛明媛,朱贺 - 非酋.mp3"></source>
</audio>
<audio id="play3">
   <source src="auto/杨宗纬 - 越过山丘.mp3"></source>
</audio>
登录后复制
play1=document.getElementById("play1");
play2=document.getElementById("play2");
play3=document.getElementById("play3");
play=[play1,play2,play3];
登录后复制

1点击播放、暂停

首选我们应该清楚的是,在点击按钮播放的时候应该实现的有:

①音乐开始播放;

②进度条开始随歌曲的播放往前走;

③图片开始随歌曲播放旋转;

④播放时间开始计时;

那么相对应的,再次点击播放按钮的时候,我们就可以让它实现暂停:

①歌曲暂停;

②让进度条同时暂停;

③让播放时间计时同时暂停;

④图片停止旋转;

注意:上述开始暂停操作一定要同步!

理清楚我们的思路以后,就可以来一 一实现了~

点击播放/暂停

 //点击播放、暂停
  function start(){
   minute=0;
    if(flag){
      imagePause();
      play[index].pause();
     }else{
      rotate();
      play[index].play();
      reducejindutiao();
      addtime();
      jindutiao();
      for (var i=0;i<play.length;i++) {
        audioall[i].style.color="white";
         }
      audioall[index].style.color="red";
     }
 }
登录后复制

因为播放和暂停在同一个按钮上,所以都会调用上述方法,我们来详细看一下各个函数都实现了怎样的功能:

图片旋转

//图片旋转,每30毫米旋转5度
  function rotate(){
    var deg=0;
    flag=1;
    timer=setInterval(function(){
    image.style.transform="rotate("+deg+"deg)";
      deg+=5;
       if(deg>360){
        deg=0;
        }
    },30);
 }
登录后复制

上述是图片转动的函数,当音乐播放的时候调用rotate()函数,就可以实现图片的旋转!

同样清除定时器的函数,当音乐暂停的时候调用imagePause(),图片旋转的定时器被清除掉:

function imagePause(){
    clearInterval(timer);
    flag=0;
 }
登录后复制

这样图片旋转的功能我们就已经实现了~

进度条

先定义两个宽度长度大小一样 颜色不同的两个p,利用currenttime属性来过去当前的播放的时间,设一个p一开始的长度为零,然后通过当前播放的事件来调整p长度大小就能实现滚动条的效果了。

function jindutiao(){
   //获取当前歌曲的歌长
   var lenth=play[index].duration;
    timer1=setInterval(function(){
    cur=play[index].currentTime;//获取当前的播放时间
     fillbar.style.width=""+parseFloat(cur/lenth)*300+"px";
      },50)
}
登录后复制

这样,进度条就完成啦~

播放时间

音乐的播放时间也是利用currenttime来随时改变,不过应该注意currenttime的计时单位为秒。

//播放时间
   function addtime(){
      timer2=setInterval(function(){
       cur=parseInt(play[index].currentTime);//秒数
        var temp=cur;
       minute=parseInt(temp/60);
       if(cur%60<10){
       time.innerHTML=""+minute+":0"+cur%60+"";
        }else{
            time.innerHTML=""+minute+":"+cur%60+"";
         }
      },1000);
}
登录后复制

2切歌我做了两种方式实现切歌:

①点击上一曲、下一曲按钮实现切歌;

 //上一曲
  function reduce(){
          qingkong();
          reducejindutiao();
          pauseall();
          index--;
          if(index==-1){
            index=play.length-1;
          }
          start();
        }
        //下一曲
        function add(){
          qingkong();
          reducejindutiao();
          pauseall();
          index++;
          if(index>play.length-1){
            index=0;
          }
          start();
        }
登录后复制

②点击歌名,实现歌曲的切换;

 //点击文字切歌
        function change(e){
          var musicName=e.target;
          //先清空所有的
          for (var i=0;i<audioall.length;i++) {
            audioall[i].style.color="white";
            if(audioall[i]==musicName){
              musicName.style.color="red";
              qingkong();
              reducejindutiao();
              pauseall();
              index=i;
              start();
            }
          }
        }
登录后复制

注意:在切歌时不要忘了我们的进度条!

将进度条滚动的定时器清除掉,然后p的长度还原为0;

//将进度条置0
 function reducejindutiao(){
     clearInterval(timer1);
      fillbar.style.width="0";
 }
登录后复制

同时音乐停止:

 //音乐停止
   function pauseall(){
        for (var i=0;i<play.length;i++) {
            if(play[i]){
              play[i].pause();
            }
          }
        }
登录后复制

清空所有定时器:

 function qingkong(){//清空所有的计时器
    imagePause();
    clearInterval(timer2);
 }
登录后复制

3点击进度条调整播放进度及音量

首先应该理清一下逻辑:当点击进度条的时候,滚动条的宽度应该跟鼠标的offsetX一样长,然后根据进度条的长度来调整听该显示的时间。

(1) 给滚动条的p添加一个事件,当滚动条长度变化的时候歌曲的当前播放的时间调整,300是滚动条的总长度;

//调整播放进度
 function adjust(e){
   var bar=e.target;
   var x=e.offsetX;
   var lenth=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";
}
登录后复制

4随机、循环播放

循环播放音乐的时候,直接index++当index的范围超过歌曲的长度的时候,index=0重新开始。随机播放的函数类似,当歌曲播放完毕的时候,随机产生一个0到play.length的数字就可以了。

 //随机播放歌曲
  function suiji(e){
          var img=e.target;
          img2.style.border="";
          img.style.border="1px solid red";
        }
        //顺序播放
        function shunxu(e){
          var img=e.target;
          img1.style.border="";
          img.style.border="1px solid red";
          clearInterval(suijiplay);
          shunxuplay=setInterval(function(){
            if(play[index].ended){
              add();
            }
          },1000);
        }
登录后复制

这样我们整个音乐播放器就完成了,大家可以自己写一个好看的界面,就更完美了

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Vue中computed属性的使用方法

ajax与跨域jsonp

用requireJS添加返回顶部功能

以上是原生JS做出一个音乐播放器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Bose Soundbar Ultra首发体验:开箱即用的家庭影院? Bose Soundbar Ultra首发体验:开箱即用的家庭影院? Feb 06, 2024 pm 05:30 PM

从我记事开始,家里就有一对落地式的大尺寸音箱,让我一直认为电视只有配上一套完整的音响系统才能称得上是电视。但是刚开始工作的时候,我买不起专业的家庭音响。经过查询和了解产品定位后,我发现回音壁这个品类非常适合我,不论是音质、体积还是价格都符合我的需求。因此,我决定选择回音壁。精挑细选后,我选中了2024年初Bose推出了这款全景声回音壁产品:Bose家庭娱乐扬声器Ultra。(图片来源:雷科技摄制)一般来说,想要体验到「原汁原味」的杜比全景声效果,需要我们在家中布置一套经过测量、校准的环绕声+吊顶

VLC Chromecast无法在Windows PC上运行 VLC Chromecast无法在Windows PC上运行 Mar 26, 2024 am 10:41 AM

VLCChromecast功能在您的WindowsPC上不起作用吗?此问题可能是由Chromecast设备与VLC的铸造功能之间的兼容性问题引起的。在这篇文章中,我们将告诉你在这种情况下你可以做什么,以及如果VLC渲染器找不到你的Chromecast该怎么办。如何在Windows上使用ChromecastVLC?要使用VLC将视频从Windows投射到Chromecast,请遵循以下步骤:打开媒体播放器应用程序,转到播放菜单。导航到Renderer选项,您将能够看到检测到的Chromecast设

借助英特尔 OpenVINO 插件,Audacity 现已获得 AI 音频编辑功能 借助英特尔 OpenVINO 插件,Audacity 现已获得 AI 音频编辑功能 Feb 15, 2024 am 11:06 AM

Audacity是一款免费开源的跨平台音频编辑软件。它具有开放的代码和插件贡献机制,任何人都可以参与其中。此外,英特尔还提供了一套免费的OpenVINOAI插件,专为音乐编辑和播客制作人而设计。本站注意到,该插件包大小约为2GB,可在Intel的GitHub页上下载,还需要64位Windows版Audacity才能运行。该AI插件最直观的地方在于为Audacity音乐编辑功能带来了三种高级工具:首先是“音乐生成”功能,用户可以用文本描述所需音乐,AI会生成60秒以内的音乐片段,方便广告和电影音乐

win10播放器进度条不动 win10播放器进度条不动 Feb 12, 2024 am 08:12 AM

Windows10v1809十月更新版正朝着史上最糟糕Windows升级义无反顾地冲过去,不但第一次正式发布后紧急撤回,还在重新打造了一个月之久后仍然Bug层出不穷,让人对微软的品控越来越担忧。现在,它的Bug清单上又多了一项,而且这次中招的是微软自家的媒体播放器WindowsMediaPlayer。近期有网友反馈,在安装最新补丁后,Windows10v1809的WindowsMediaPlayer出现了无法拖动播放进度条的问题。目前还没有找到解决办法。微软已确认了一个Bug,涉及两个补丁KB4

汽水音乐本地音乐怎么添加 汽水音乐本地音乐怎么添加 Feb 23, 2024 pm 07:13 PM

汽水音乐本地音乐怎么添加?汽水音乐APP中可以添加自己喜爱的本地音乐,但是多数的小伙伴不知道如何添加本地音乐,接下来就是小编为用户带来的汽水音乐本地音乐添加方法图文教程,感兴趣的用户快来一起看看吧!汽水音乐使用教程汽水音乐本地音乐怎么添加1、首先打开汽水音乐APP,主页面最下方【音乐】功能专区点击;2、之后进入到播放页面,点击右下角【三个点】图标;3、最后下方展开功能栏,选择其中【下载】按钮即可添加到本地音乐。

选择适合音乐生的平板电脑 选择适合音乐生的平板电脑 Jan 10, 2024 pm 10:09 PM

音乐生用什么平板合适华为的ipad中的12.9寸音响是一款非常好的产品。它配备了四个扬声器,音效非常出色。而且,它属于pro系列,相比其他款式稍微更好一些。总体来说,ipadpro是一款非常优秀的产品。这款mini4手机的喇叭声音较小,效果一般般。不能用来外放音乐,还是需要依靠耳机来享受音乐。耳机音质好的会有稍微好一些的效果,而便宜的三四十元的耳机就无法满足要求了。钢琴电子谱用什么平板如果您想购买一台10寸以上的iPad,我推荐使用两款应用程序,分别是Henle和Piascore。Henle提供

微信怎么放音乐 微信怎么放音乐 Feb 23, 2024 pm 09:28 PM

微信怎么放音乐?微信APP中是可以播放自己喜爱的音乐,但是多数的小伙伴不知道微信中如何播放自己喜爱的音乐,接下来就是小编为用户带来的微信放音乐方法图文教程,感兴趣的用户快来一起看看吧!微信使用教程微信怎么放音乐1、首先打开微信APP,从顶部向下滑动进入到小程序页面;2、接着点击如下图箭头所示的【音乐】;3、然后在如下图的界面,搜索框输入喜爱的歌名;4、最后选择对应歌名点击即可放歌曲。

抖音查看收藏的音乐的详细步骤 抖音查看收藏的音乐的详细步骤 Mar 26, 2024 pm 06:20 PM

1、点击【+】。2、点击上方【选择音乐】。3、点击【我的收藏】即可。方法二:1、打开抖音,点击【我】。2、点击头像旁边的【收藏】。3、点击【音乐】即可

See all articles