Day1 JavaScript Drum Kit
JavaScript30 Day1 筆記
Functions
- (使用者)按下指定按鍵按鈕(系統)會播出指定的聲音
- 使用者按下按鈕
- event: keydown
 
 - 系統播放指定樂器聲音
- audio.play()
 
 
 - 使用者按下按鈕
 
Steps
- 宣告 keydown handler: playSound
- 取得特定按鍵的 keyCode
 - 按到非特定按鍵即停止 function
 - 播放擁有與 keyCode 相同 
data-key的 audio 
 - 宣告 transitionend handler: removeTransition
- 對畫面中代表該按鍵的元素添加 class 開始 active 的 transition 動畫
 - 綁定各按鍵元素,監聽 transitionend 事件,偵測按鍵動畫以結束移除 class
 
 - 綁訂事件
- 對 window 綁訂 keydown
 - 對.key 綁訂 transitionend
 
 
Fixed
- 連續敲擊鍵盤並沒有連續播放
- 原因:必須等音樂播放完畢後再觸發 keydown 才會播放
 - 方法:
audio.currentTime = 0,強制事件觸發音樂就從0秒播放 
 
Native JS
- 
el.classList.add / remove / toggle('...') - 
event listener
- keydown
 - transitionend
 - event object has different properties within every event
 - this within a event handler is the.object which invokes it
 
 - 
document.querySelector()- an element - 
document.querySelectorAll()- all elements - 
audio[data-key=`${...}`]- 允許嵌入運算式的字面量字串,取代 ‘…’ + variable + ‘…’
 - ‘…’ 會使 ${ … } 轉為字串
 - 不需插入換行符號即可直接換行
 - 也可作為一般的字串使用
 
 - 
${ ... }- 計算任何的表達式- if() only one line statement
 
 - 
audio
audio.play()- play the audioaudio.currentTime = 0- jump to specified position (in seconds) of audio
 - 
ES6
- const
- does not hoisting
 - only works inside declared scope
 - must valued when declared
 - cannot revalued again if valued
 
 
 - const
 
References
- let 和 const 命令 @ECMAScript 6入门