[miniProjects] 09_Sound Board

보리·2023λ…„ 6μ›” 16일
0

miniProjects

λͺ©λ‘ 보기
10/47

09_Sound Board

πŸ’» 주제 : μ†Œλ¦¬ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ†Œλ¦¬κ°€ λ‚˜μ˜΄. μ†Œλ¦¬κ°€ λλ‚˜κΈ° 전에 λ‹€λ₯Έ μ†Œλ¦¬ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ 전에 λˆŒλ €λ˜ λ²„νŠΌμ˜ μ†Œλ¦¬κ°€ 쀑지됨.

const sounds = ['applause', 'boo', 'gasp', 'tada', 'victory', 'wrong'];

sounds.forEach(sound => {
  const btn = document.createElement('button');
  btn.classList.add('btn');

  btn.innerText = sound;

  btn.addEventListener('click', () => {
    stopSongs();
    document.getElementById(sound).play();
  })

  document.getElementById('buttons').appendChild(btn);
})

function stopSongs() {
  sounds.forEach(sound => {
    const song = document.getElementById(sound);
    song.pause();
    song.currentTime = 0;
  })
}
  • soundsλΌλŠ” 배열을 μ„ μ–Έν•˜κ³ , μ—¬λŸ¬ μ˜€λ””μ˜€ 파일 이름을 포함.
  • sounds.forEach(sound => { ... })을 μ‚¬μš©ν•˜μ—¬ sounds λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 반볡 μž‘μ—…μ„ μˆ˜ν–‰.
  • 반볡문 λ‚΄λΆ€μ—μ„œλŠ” document.createElement('button')을 μ‚¬μš©ν•˜μ—¬ λ²„νŠΌ μš”μ†Œλ₯Ό μƒμ„±ν•˜κ³ , btn.classList.add('btn')λ₯Ό μ‚¬μš©ν•˜μ—¬ 'btn' 클래슀λ₯Ό λ²„νŠΌμ— μΆ”κ°€.
  • btn.innerText = soundλ₯Ό 톡해 λ²„νŠΌμ˜ λ‚΄μš©μ„ sound μš”μ†Œλ‘œ μ„€μ •. 즉, 각 λ²„νŠΌμ˜ ν…μŠ€νŠΈλŠ” sounds λ°°μ—΄μ˜ μš”μ†Œμ™€ λ™μΌν•˜κ²Œ λœλ‹€.
  • btn.addEventListener('click', () => { ... })λ₯Ό μ‚¬μš©ν•˜μ—¬ λ²„νŠΌμ— 클릭 이벀트 ν•Έλ“€λŸ¬λ₯Ό μΆ”κ°€. 이 ν•Έλ“€λŸ¬μ—μ„œλŠ” stopSongs() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ λͺ¨λ“  μ˜€λ””μ˜€λ₯Ό μ •μ§€ν•œ λ‹€μŒ, 클릭된 λ²„νŠΌμ— ν•΄λ‹Ήν•˜λŠ” μ˜€λ””μ˜€λ₯Ό μž¬μƒ. document.getElementById(sound).play()λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή μ˜€λ””μ˜€ μš”μ†Œλ₯Ό μ°Ύκ³  μž¬μƒ.
  • document.getElementById('buttons').appendChild(btn)λ₯Ό μ‚¬μš©ν•˜μ—¬ λ²„νŠΌμ„ HTML λ¬Έμ„œμ˜ 'buttons'λΌλŠ” μš”μ†Œμ— μΆ”κ°€.
  • stopSongs() ν•¨μˆ˜λŠ” λͺ¨λ“  μ˜€λ””μ˜€λ₯Ό μ •μ§€μ‹œν‚€λŠ” μ—­ν• . sounds.forEach(sound => { ... })λ₯Ό μ‚¬μš©ν•˜μ—¬ sounds λ°°μ—΄μ˜ 각 μš”μ†Œμ— λŒ€ν•΄ 반볡 μž‘μ—…μ„ μˆ˜ν–‰. 각 μš”μ†Œμ— ν•΄λ‹Ήν•˜λŠ” μ˜€λ””μ˜€ μš”μ†Œλ₯Ό 찾은 λ‹€μŒ, pause() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μž¬μƒμ„ μΌμ‹œ μ •μ§€ν•˜κ³ , currentTime 속성을 0으둜 μ„€μ •ν•˜μ—¬ μ˜€λ””μ˜€λ₯Ό 처음으둜 λ˜κ°λŠ”λ‹€.
profile
μ •μ‹ μ°¨λ € 이 κ°λ°•ν•œ μ„Έμƒμ†μ—μ„œ

0개의 λŒ“κΈ€