> 웹 프론트엔드 > JS 튜토리얼 > 네이티브 JS로 뮤직 플레이어 만들기

네이티브 JS로 뮤직 플레이어 만들기

php中世界最好的语言
풀어 주다: 2018-04-17 14:26:27
원래의
5373명이 탐색했습니다.

이번에는 네이티브 JS로 뮤직 플레이어를 만드는 방법을 소개하겠습니다. 네이티브 JS로 뮤직 플레이어를 만들 때 주의사항은 무엇인가요?

이전 단어                                  최근 JS를 리뷰했는데 뮤직 플레이어가 꽤 흥미로운 것 같아요. 오늘은 가장 네이티브 JS를 사용하여 작은 뮤직 플레이어를 작성해 보겠습니다~

주요 기능:

1. 루프 및 랜덤 플레이 지원

 2. 재생 중 이미지 회전 지원

3.

진행률 표시줄

을 클릭하여 재생 위치를 조정하고 볼륨을 조정할 수 있습니다. ​ ​ 4. 음악 재생 시간 표시

5. 노래 전환 지원: 이전 노래, 다음 노래, 노래 제목을 클릭하여 노래 재생 일시 중지 등을 전환하세요.~

음악을 추가하는 방법에는 두 가지가 있습니다:

① 오디오 태그를 사용하여 음악의 주소를 배열로 저장할 수 있습니다. ②두 번째 방법은 노래가 여러 개인 경우 몇 개의 오디오 태그를 추가한 다음 모든 배경 음악을 가져오는 것입니다(예제에서는 먼저 세 곡의 음악을 추가하여 배열에 넣습니다. 물론 아무 노래나 선택할 수 있습니다.) 당신은 좋아합니다.

rreerrree

1 재생하고 일시 정지하려면 클릭하세요

가장 먼저 분명히 해야 할 것은 재생 버튼을 클릭할 때 다음이 달성되어야 한다는 것입니다: ①음악이 재생되기 시작합니다

②노래가 재생되면서 진행률 표시줄이 앞으로 이동하기 시작합니다. ③노래가 재생되면서 사진이 회전하기 시작합니다.

④재생 시간이 시작됩니다

그에 따라 재생 버튼을 다시 클릭하면 일시 중지되도록 설정할 수 있습니다.

①노래가 멈춥니다.

②진행률 표시줄을 동시에 일시 중지합니다.

③ 동시에 재생 시간을 일시 중지합니다.

④사진 회전이 멈춥니다

참고: 위의 시작 및 일시 중지 작업은 동기화되어야 합니다!

아이디어를 명확히 한 후에 하나씩 구현해보겠습니다~

재생/일시 정지를 클릭하세요

<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];
로그인 후 복사

위는 이미지 회전 기능입니다. 음악이 재생될 때,rotate() 함수를 호출하면 이미지 회전을 구현할 수 있습니다!

timer를 지우는 데 동일한 함수가 사용됩니다. 음악이 일시 중지되면 imagePause()가 호출되고 이미지 회전 타이머가 지워집니다.

 //点击播放、暂停
  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";
     }
 }
로그인 후 복사

이런식으로 이미 이미지 회전 기능을 구현해두었습니다~

진행률 표시줄

먼저 너비, 길이가 동일하고 색상이 다른 두 개의 p를 정의합니다.

current

time 속성을 사용하여 현재 재생 시간을 전달합니다. p의 초기 길이를 0으로 설정한 다음 현재 재생 이벤트를 통해 p의 길이를 조정합니다. 스크롤바 효과를 얻을 수 있습니다. rreee 이렇게 진행바가 완성됩니다~

놀이시간

음악의 재생 시간도 현재 시간을 사용하여 언제든지 변경되지만 현재 시간의 시간 단위는 초라는 점에 유의해야 합니다.

rreee

2컷 송저는 컷 송을 얻기 위해 두 가지 방법을 시도했습니다:

①이전 노래와 다음 노래 버튼을 클릭하면 노래가 전환됩니다.

//图片旋转,每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);
 }
로그인 후 복사

②노래 제목을 클릭하면 노래가 전환됩니다.

function imagePause(){
    clearInterval(timer);
    flag=0;
 }
로그인 후 복사
참고: 노래를 전환할 때 진행률 표시줄을 잊지 마세요!

진행률 표시줄 스크롤 타이머를 지운 다음 p의 길이를 0으로 복원합니다.

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

그러는 동안 음악이 멈춥니다.

//播放时间
   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);
}
로그인 후 복사

모든 타이머 지우기:

 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿