-
자바스크립트 드럼 키트 만들기Let's Code/JavaScript 2021. 3. 29. 22:51
1. 키보드의 특정 키를 누르면 매칭되는 음원 재생시키기
function playSound(e) { const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`); const key = document.querySelector(`.key[data-key="${e.keyCode}"]`); if (!audio) return; audio.currentTime = 0; audio.play(); key.classList.add('playing'); } const keys = document.querySelectorAll('.key'); window.addEventListener('keydown', playSound);
- document.querySelector 키를 이용하여 특정 태그 뿐만 아니라 태그의 속성값을 특정하여 가져올 수 있다. 이 때 백틱과 ${}를 사용하면 유연하게 값을 변수 처리하여 불러올 수 있다.
- currentTime을 0으로 설정하면, 음악의 기본 재생시간을 0으로 설정하여 키 값을 쉼 없이 연속해서 누를 때 버퍼링 없이 음악이 바로 반복 시작되게 할 수 있다.
- 자바스크립트를 이용하여 클래스명을 동적으로 바꿀 수 있다. 이를 통해 자바스크립트가 처리한 클래스와 그렇지 않은 클래스를 구분한다.
- 윈도우에서 키보드의 특정 키를 누르면 ('keydown') 함수가 실행되도록 한다.
2. 음원 재생 함수가 실행되고 나면 효과를 없애기
function removeTransition(e) { if (e.propertyName !== 'transform') return; e.target.classList.remove('playing'); } keys.forEach(key => key.addEventListener('transitionend', removeTransition));
- 동적으로 변환된 클래스명을 transform CSS 속성 명으로 구분, 클래스명을 다시 원래대로 바꾼다.
- CSS를 통한 transition이 실행되고 나면 이 함수를 자동으로 실행시키도록 한다.
3. CSS의 transform 속성
- scale (크기가 커짐), rotate (회전함), translate (이동함) 등 다양한 동적인 디자인을 적용할 수 있다.
'Let's Code > JavaScript' 카테고리의 다른 글
React 자습서 따라하기 (1) Constructor (0) 2021.07.17 React와 JSX (0) 2021.07.17 자바스크립트 시계 만들기 (0) 2021.03.16 자바스크립트: 객체의 기본 (0) 2021.03.10 자바스크립트: 함수 선언, 표현, 콜백 (0) 2021.03.09 댓글