๋ฐ์ํ
1. ์ค๋์ค, ๋น๋์ค ์ฌ์ํ๊ธฐ
โ๏ธ html์์ ์ค๋์ค๋ฅผ ์ฐ๊ฒฐํ ๋๋ <audio> ํ๊ทธ๋ฅผ ์ฐ๊ณ src๋ก ์ค๋์ค ์์ค๋ฅผ ์ง์ ํ๋ค.
<audio data-key="65" src="sounds/clap.wav"></audio>
โ๏ธ ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํ๋ ์ด ์ํฌ๋๋ .play()๋ฅผ ์ฌ์ฉํ๋ค.
audio.play();
โ๏ธ ์ค๋์ค, ๋น๋์ค ์ผ์์ ์ง ์ํค๊ธฐ
audio.pause();
2. ์ค๋์ค, ๋น๋์ค ์ฌ์ ์์ ์ค์ ํ๊ธฐ
audio.currentTime = 0;
โฅ ์ด ๋จ์์ด๊ณ , 0 ๊ฐ์ธ ๊ฒฝ์ฐ ์ฒ์๋ถํฐ ์์ ์ ์ฌ์ํ๋ค.
3. ๋ช ์๋ ํด๋์ค ์ถ๊ฐ, ์ ๊ฑฐํ๋ ๋ฉ์๋
โ๏ธ ๋ช
์๋ ํด๋์ค ์ถ๊ฐํ๊ธฐ
์๋ ํฐ.classList.add("playing");
โฅ playing์ด๋ผ๋ ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ธฐ
โ๏ธ ๋ช ์๋ ํด๋์ค ์ ๊ฑฐํ๊ธฐ
์๋ ํฐ.classList.remove("playing");
โ๏ธ ํด๋์ค๊ฐ ์์ผ๋ฉด ์ ๊ฑฐํ๊ณ false๋ฅผ ๋ฐํํ๊ณ ์์ผ๋ฉด ํด๋์ค ์ถ๊ฐํ๊ณ true๋ฅผ ๋ฐํํ๊ธฐ
์๋ ํฐ.classList.toggle("playing");
5. addEventListener์์ ์๋ก์ด ์ด๋ฒคํธ 'transitionend'
transition์ด ์๋ฃ๋ ์ดํ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ด๋ค. transition ์๋ฃ๋ฅผ ๊ฐ์งํ๋ค.
test.addEventListener("transitionend", addText);
const addText = () => {
test.innerHTML = "์ด๊ฒ์ ํ
์คํธ ํ
์คํธ์
๋๋ค..";
}
โฅ transition์ด ๋๋๋ฉด addText ํจ์๋ฅผ ์์ํ๋ค.
key.addEventListener("transitionend", removeTransition)
โฅ transition์ด ๋๋๋ฉด removeTransition ํจ์๋ฅผ ์์ํ๋ค.
๋ฐ์ํ
'๐Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Deep Dive] ๋ณ์์ ํธ์ด์คํ (0) | 2022.11.30 |
---|---|
[#JS 30 challenge] Day 2. Clock ๋ฐฐ์ด ์ (0) | 2022.08.13 |
์๋ฐ์คํฌ๋ฆฝํธ, if๋ฌธ๊ณผ switch ๊ตฌ๋ฌธ ๋น๊ตํ๊ธฐ (0) | 2022.07.20 |
๋ฐฐ์ด ์ ๊ฐ์ฒด ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ฆฌํ๊ธฐ (0) | 2022.07.12 |
find(), findIndex(), Object.entries() (0) | 2022.07.07 |