首頁 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.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 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

選擇適合音樂生的平板電腦 選擇適合音樂生的平板電腦 Jan 10, 2024 pm 10:09 PM

音樂生用什麼平板合適華為的ipad中的12.9吋音響是一款非常好的產品。它配備了四個揚聲器,音效非常出色。而且,它屬於pro系列,相比其他款式稍微更好。整體來說,ipadpro是一款非常優秀的產品。這款mini4手機的喇叭聲音較小,效果一般般。不能用來外放音樂,還是需要依賴耳機來享受音樂。耳機音質好的會有稍微好一些的效果,而便宜的三四十元的耳機就無法滿足要求了。鋼琴電子譜用什麼平板如果您想購買一台10寸以上的iPad,我推薦使用兩款應用程序,分別是Henle和Piascore。 Henle提供

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

汽水音樂本地音樂怎麼添加?汽水音樂APP中可以添加自己喜愛的本地音樂,但是多數的小伙伴不知道如何添加本地音樂,接下來就是小編為用戶帶來的汽水音樂本地音樂添加方法圖文教程,有興趣的用戶快來一起看看吧!汽水音樂使用教學汽水音樂本地音樂怎麼添加1、先打開汽水音樂APP,主頁最下方【音樂】功能專區點擊;2、之後進入到播放頁面,點擊右下角【三個點】圖標;3、最後下方展開功能欄,選擇其中【下載】按鈕即可新增至本機音樂。

抖音查看收藏的音樂的詳細步驟 抖音查看收藏的音樂的詳細步驟 Mar 26, 2024 pm 06:20 PM

1.點選【+】。 2、點選上方【選擇音樂】。 3.點選【我的收藏】即可。方法二:1、開啟抖音,點選【我】。 2.點選頭像旁邊的【收藏】。 3.點選【音樂】即可

微信怎麼放音樂 微信怎麼放音樂 Feb 23, 2024 pm 09:28 PM

微信怎麼放音樂?微信APP中是可以播放自己喜愛的音樂,但是多數的小伙伴不知道微信中如何播放自己喜愛的音樂,接下來就是小編為用戶帶來的微信放音樂方法圖文教程,有興趣的用戶快來一起看看吧!微信使用教程微信怎麼放音樂1、先打開微信APP,從頂部向下滑動進入到小程式頁面;2、接著點擊如下圖箭頭所示的【音樂】;3、然後在如下圖的介面,搜尋框輸入喜愛的歌名;4、最後選擇對應歌名點選即可放歌曲。

See all articles