Dram Kit

data-key

div ์†์„ฑ์ค‘ data-key ๋Š” ์–ด๋–ค ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์‹คํ–‰ ์‹œํ‚ฌ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. http://keycode.info/ ์—์„œ ๊ฐ ํ‚ค์˜ ํ‚ค์ฝ”๋“œ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 function palySound(e){
    // console.log(e.keyCode); ๋ˆ„๋ฅธ key: "a" keyCode๋ฅผ ๋ณผ์ˆ˜ ์žˆ์Œ 
    const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`); 
    const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
    if(!audio) return; // ์œ„์— ์žˆ๋Š” data-key๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ null์ด ๋œจ์ง€ ์•Š๊ณ  ์‹คํ–‰์‹œ์ผœ์ฃผ๊ฒŒํ•จ 
    audio.currentTime = 0; //์ƒˆ๋กญ๊ฒŒ ์‹œ์ž‘ ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•จ
    audio.play(); 
    key.classList.add('playing');
 }

 function removeTransition(e){
   if(e.propertyName !=='transform') return; // transfrom ์ด์•„๋‹Œ๊ฒƒ์€ ์‹คํ–‰๋˜์ง€ ์•Š๊ฒŒ ํ•ด์คŒ
     this.classList.remove('playing') // ๋ˆ„๋ฅด๊ณ  playing ์— ์„ค์ •ํ•œ๋งŒํผ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋œ ํ›„์— ์‚ฌ๋ผ์ง€๊ฒŒ ํ•ด์ฃผ๋Š” 
 }

 const keys = document.querySelectorAll('.key');
 keys.forEach(key => key.addEventListener('transitionend', removeTransition));
 window.addEventListener('keydown',palySound);

Last updated