[JavaScript] 음악 플레이리스트 프로그래스바 제작 (3)

2024. 11. 14. 20:54·Front end/JavaScript

버그를 해결했다. 원인을 찾아보니 크롬을 실행할 때 음원이 나오지 않아도 AudioContext 객체를 생성할 수 없다. 그래서 즉시 실행되던 함수를 묶어 playMusic 에서 실행하도록 바꾸었더니 해결됐다. 

 

다음으로 프로그래스 바를 만들었다. 내용을 요약하자면 오디오 timeupdate 이벤트 리스너를 이용해 내부 함수가 계속해서 실행될 수 있게 했다. 그 뒤로는 현재길이 / 전체길이 를 백분위로 환산한 뒤 프로그래스 바의 width 길이에 대입했다.

 

재생 시간에 따른 프로그래스 바 크기 조절

실행코드

  audio.addEventListener("timeupdate", (e) => {
    // console.log(e);

    // 프로그래스 바 진행 리스너
    const currentTime = e.target.currentTime; // 현재 재생되는 시간
    const duration = e.target.duration; // 오디오의  총 길이
    let progressWidth = (currentTime / duration) * 100;
    progressBar.style.width = `${progressWidth}%`;
  });

 

 

클릭 이벤트

실행 코드

  progress.addEventListener("click", (e) => {
    console.log("click");

    let progressWidth = progress.clientWidth;

    let clickedOffsetX = e.offsetX;
    let songDuration = audio.duration;

    audio.currentTime = (clickedOffsetX / progressWidth) * songDuration;
    console.log(progressWidth);
  });

offsetX 속성은 기준이 요소이다. 따라서 클릭을 한 위치가 요소의 어느 부분인지를 반환한다. 해당 위치와 전체 위치를 이용해 노래의 어느 부분으로 이동할지 결정한다. 

반응형
저작자표시 (새창열림)

'Front end > JavaScript' 카테고리의 다른 글

ES6 함수의 추가 기능  (3) 2024.11.15
[JavaScript] 타입별 메서드와 제너레이트  (2) 2024.11.13
[JavaScript] 클로저 (closure)란 무엇일까  (1) 2024.11.12
[JavaScript] 음악 플레이리스트 (2) 사운드 스펙트럼, 에러 극복기  (0) 2024.11.11
[JavaScript] 음악 스펙트럼 플레이어 만들기  (12) 2024.11.10
'Front end/JavaScript' 카테고리의 다른 글
  • ES6 함수의 추가 기능
  • [JavaScript] 타입별 메서드와 제너레이트
  • [JavaScript] 클로저 (closure)란 무엇일까
  • [JavaScript] 음악 플레이리스트 (2) 사운드 스펙트럼, 에러 극복기
re-hwi
re-hwi
재휘의 개발일기
    반응형
  • re-hwi
    Dvelopment blog
    re-hwi
  • 전체
    오늘
    어제
    • 재휘의 개발일기 (168)
      • 개발 (1)
        • 소프트웨어 공학 (25)
      • Python (18)
        • numpy (8)
      • OS (23)
        • 쉽게 배우는 운영체제 (23)
      • Front end (1)
        • HTML (6)
        • CSS (9)
        • JavaScript (18)
        • React (2)
        • Vue.js (5)
        • TypeScript (5)
        • Sass (3)
      • Algorithm (1)
        • 파이썬 알고리즘 인터뷰 (2)
        • 자료구조와 함께 배우는 알고리즘 (20)
      • Android (2)
        • 안드로이드 앱 프로그래밍 with 코틀린 (2)
      • Project (15)
      • Network (0)
      • etc (12)
        • 이것저것 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    뷰
    CSS
    정처기
    typeScript
    HTML
    FE
    numpy
    연결리스트
    개발
    REACT
    js
    sass
    정보처리기사
    타입스크립트
    플레이리스트
    자료구조
    컴포넌트
    표
    티스토리챌린지
    pwa
    JavaScript
    프론트엔드
    알고리즘
    자료흐름도
    오블완
    scss
    리액트
    파이썬
    TS
    vue
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
re-hwi
[JavaScript] 음악 플레이리스트 프로그래스바 제작 (3)
상단으로

티스토리툴바