Rumah hujung hadapan web tutorial js 原生JS做出一个音乐播放器

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

Apr 17, 2018 pm 02:26 PM
javascript pemain muzik

这次给大家带来原生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>
Salin selepas log masuk
play1=document.getElementById("play1");
play2=document.getElementById("play2");
play3=document.getElementById("play3");
play=[play1,play2,play3];
Salin selepas log masuk

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";
     }
 }
Salin selepas log masuk

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

图片旋转

//图片旋转,每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);
 }
Salin selepas log masuk

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

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

function imagePause(){
    clearInterval(timer);
    flag=0;
 }
Salin selepas log masuk

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

进度条

先定义两个宽度长度大小一样 颜色不同的两个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)
}
Salin selepas log masuk

这样,进度条就完成啦~

播放时间

音乐的播放时间也是利用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);
}
Salin selepas log masuk

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();
        }
Salin selepas log masuk

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

 //点击文字切歌
        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();
            }
          }
        }
Salin selepas log masuk

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

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

//将进度条置0
 function reducejindutiao(){
     clearInterval(timer1);
      fillbar.style.width="0";
 }
Salin selepas log masuk

同时音乐停止:

 //音乐停止
   function pauseall(){
        for (var i=0;i<play.length;i++) {
            if(play[i]){
              play[i].pause();
            }
          }
        }
Salin selepas log masuk

清空所有定时器:

 function qingkong(){//清空所有的计时器
    imagePause();
    clearInterval(timer2);
 }
Salin selepas log masuk

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();
}
Salin selepas log masuk

(2) 改变音量的滚动条,跟改变播放时间类似,利用volume属性(值为零到一);

 //调整音量大小
  function changeVolume(e){
    var x=e.offsetX+20;
    play[index].volume=parseFloat(x/200)*1;
    //改变按钮的位置
     volume3.style.left=""+x+"px";
}
Salin selepas log masuk

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);
        }
Salin selepas log masuk

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

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

推荐阅读:

Vue中computed属性的使用方法

ajax与跨域jsonp

用requireJS添加返回顶部功能

Atas ialah kandungan terperinci 原生JS做出一个音乐播放器. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengalaman pelancaran Bose Soundbar Ultra: Teater rumah terus dari kotak? Pengalaman pelancaran Bose Soundbar Ultra: Teater rumah terus dari kotak? Feb 06, 2024 pm 05:30 PM

Sepanjang yang saya ingat, saya mempunyai sepasang pembesar suara yang berdiri di lantai di rumah Saya sentiasa percaya bahawa TV hanya boleh dipanggil TV jika ia dilengkapi dengan sistem bunyi yang lengkap. Tetapi apabila saya mula bekerja, saya tidak mampu membeli audio rumah profesional. Selepas bertanya dan memahami kedudukan produk, saya dapati kategori bar bunyi sangat sesuai untuk saya ia memenuhi keperluan saya dari segi kualiti bunyi, saiz dan harga. Oleh itu, saya memutuskan untuk menggunakan bar bunyi. Selepas pemilihan yang teliti, saya memilih produk bar bunyi panoramik yang dilancarkan oleh Bose pada awal 2024: Pembesar suara hiburan rumah Bose Ultra. (Sumber foto: Difoto oleh Lei Technology) Secara umumnya, jika kita ingin mengalami kesan Dolby Atmos "asal", kita perlu memasang bunyi sekeliling + siling yang diukur dan ditentukur di rumah.

VLC Chromecast tidak berfungsi pada Windows PC VLC Chromecast tidak berfungsi pada Windows PC Mar 26, 2024 am 10:41 AM

Adakah ciri Chromecast VLC tidak berfungsi pada PC Windows anda Isu ini mungkin disebabkan oleh isu keserasian antara peranti Chromecast anda dan ciri penghantaran VLC. Dalam artikel ini, kami akan memberitahu anda perkara yang boleh anda lakukan dalam situasi ini dan perkara yang perlu dilakukan jika pemapar VLC tidak dapat mencari Chromecast anda. Bagaimana untuk menggunakan ChromecastVLC pada Windows? Untuk menggunakan VLC untuk menghantar video dari Windows ke Chromecast, ikut langkah ini: Buka apl pemain media dan pergi ke menu main. Navigasi ke pilihan Renderer dan anda akan dapat melihat peranti Chromecast dikesan

Audacity kini mendapat keupayaan penyuntingan audio AI dengan pemalam Intel OpenVINO Audacity kini mendapat keupayaan penyuntingan audio AI dengan pemalam Intel OpenVINO Feb 15, 2024 am 11:06 AM

Audacity ialah perisian penyuntingan audio merentas platform sumber terbuka dan percuma. Ia mempunyai kod terbuka dan mekanisme sumbangan pemalam, dan sesiapa sahaja boleh mengambil bahagian. Selain itu, Intel menawarkan set percuma pemalam OpenVINOAI yang direka untuk editor muzik dan pengeluar podcast. Laman web ini mendapati bahawa pakej pemalam adalah kira-kira 2GB dalam saiz dan boleh dimuat turun pada halaman GitHub Intel Ia juga memerlukan versi Windows 64-bit Audacity untuk dijalankan. Perkara yang paling intuitif tentang pemalam AI ini ialah ia membawa tiga alat lanjutan kepada fungsi penyuntingan muzik Audacity: Yang pertama ialah fungsi "Generasi Muzik" Pengguna boleh menggunakan teks untuk menerangkan muzik yang mereka inginkan, dan AI akan menjana muzik klip dalam masa 60 saat untuk memudahkan pengiklanan dan muzik filem

Bar kemajuan pemain Win10 tidak bergerak Bar kemajuan pemain Win10 tidak bergerak Feb 12, 2024 am 08:12 AM

Versi kemas kini Oktober Windows 10v1809 sedang menuju ke arah peningkatan Windows paling teruk dalam sejarah tanpa teragak-agak. Bukan sahaja ia ditarik balik segera selepas keluaran rasmi pertama, tetapi ia masih penuh dengan pepijat selepas dibina semula selama sebulan, membuatkan orang ramai meragui kualiti Microsoft. Kawalan semakin risau. Kini, ia mempunyai satu lagi pepijat dalam senarainya, dan kali ini ia adalah pemain media Microsoft sendiri, Windows Media Player. Baru-baru ini, beberapa netizen telah melaporkan bahawa selepas memasang tampung terbaharu, Windows Media Player dalam Windows 10v1809 mengalami masalah di mana bar kemajuan main balik tidak boleh diseret. Tiada penyelesaian ditemui lagi. Microsoft telah mengesahkan pepijat yang melibatkan dua tampung untuk KB4

Memilih tablet yang sesuai untuk pelajar muzik Memilih tablet yang sesuai untuk pelajar muzik Jan 10, 2024 pm 10:09 PM

Tablet manakah yang sesuai untuk pemuzik? Pembesar suara 12.9 inci dalam iPad Huawei adalah produk yang sangat baik. Ia datang dengan empat pembesar suara dan kualiti bunyi yang sangat baik. Selain itu, ia tergolong dalam siri pro, yang lebih baik sedikit daripada gaya lain. Secara keseluruhan, iPad Pro ialah produk yang sangat baik. Pembesar suara telefon bimbit mini4 ini kecil dan kesannya sederhana. Ia tidak boleh digunakan untuk memainkan muzik secara luaran, anda masih perlu bergantung pada fon kepala untuk menikmati muzik. Fon kepala dengan kualiti bunyi yang baik akan mempunyai kesan yang lebih baik sedikit, tetapi fon kepala murah bernilai tiga puluh atau empat puluh yuan tidak dapat memenuhi keperluan. Apakah tablet yang perlu saya gunakan untuk muzik piano elektronik. Jika anda ingin membeli iPad yang lebih besar daripada 10 inci, saya mengesyorkan menggunakan dua aplikasi, iaitu Henle dan Piascore. Disediakan oleh Henle

Bagaimana untuk menambah muzik tempatan pada muzik soda Bagaimana untuk menambah muzik tempatan pada muzik soda Feb 23, 2024 pm 07:13 PM

Bagaimana untuk menambah muzik tempatan ke Muzik Soda? Anda boleh menambah muzik tempatan kegemaran anda ke APP Muzik Soda, tetapi kebanyakan rakan tidak tahu cara menambah muzik tempatan Seterusnya ialah tutorial grafik tentang cara menambah muzik tempatan yang dibawa oleh editor, pengguna yang berminat datang dan lihat! Tutorial menggunakan muzik soda Cara menambah muzik tempatan ke muzik soda 1. Mula-mula buka APP muzik soda dan klik pada kawasan fungsi [Muzik] di bahagian bawah halaman utama ikon [tiga titik] di sudut kanan bawah 3. Akhir sekali Kembangkan bar fungsi di bawah dan pilih butang [Muat Turun] untuk menambahkannya ke muzik tempatan.

Langkah terperinci untuk melihat muzik kegemaran anda di Douyin Langkah terperinci untuk melihat muzik kegemaran anda di Douyin Mar 26, 2024 pm 06:20 PM

1. Klik [+]. 2. Klik [Pilih Muzik] di atas. 3. Klik [Kegemaran Saya]. Kaedah 2: 1. Buka Douyin dan klik [Saya]. 2. Klik [Kumpul] di sebelah avatar. 3. Klik [Muzik]

Cara memainkan muzik di WeChat Cara memainkan muzik di WeChat Feb 23, 2024 pm 09:28 PM

Bagaimana untuk memainkan muzik di WeChat? Anda boleh memainkan muzik kegemaran anda pada APP WeChat, tetapi kebanyakan rakan tidak tahu cara memainkan muzik kegemaran mereka di WeChat Seterusnya ialah tutorial grafik tentang cara memainkan muzik di WeChat yang dibawa oleh editor. Pengguna yang berminat datang dan lihat! Tutorial penggunaan WeChat: Cara memainkan muzik di WeChat 1. Mula-mula buka APP WeChat, luncurkan ke bawah dari atas untuk masuk ke halaman program mini 2. Kemudian klik [Muzik] seperti yang ditunjukkan oleh anak panah dalam gambar di bawah; dalam antara muka seperti yang ditunjukkan di bawah, masukkan kotak carian Masukkan tajuk lagu kegemaran anda 4. Akhir sekali, pilih tajuk lagu yang sepadan dan klik untuk memainkan lagu.

See all articles