簡體   English   中英

按鍵播放聲音 - JavaScript

[英]Play sound on key press - JavaScript

我不知道我的代碼有什么問題,當我按下按鍵時聲音沒有播放。

for(var i=0;i<document.querySelectorAll(".drum").length;i++)
{

    document.querySelectorAll("button")[i].addEventListener("click",function() {
     
        var buttoninnerhtml = this.innerHTML;

        makesound(buttoninnerhtml);
       
    
        
    });


}

document.addEventListener("keydown",function(event){

  makesound(event,key);

});

function makesound(key)
{
  
    switch (key) {
        case "w":
            var audio = new Audio('sounds/tom-1.mp3');
            audio.play();
            break;

        case "a":
                var audio = new Audio('sounds/tom-2.mp3');
                audio.play();
                break;

        case "s":
                 var audio = new Audio('sounds/tom-3.mp3');
                audio.play();
                break;
    
        case "d":
                var audio = new Audio('sounds/tom-4.mp3');
                audio.play();
                break;

         case "j":
            var audio = new Audio('sounds/snare.mp3');
            audio.play();
            break;
            
        case "k":
            var audio = new Audio('sounds/crash.mp3');
                    audio.play();
                    break;

        case "l":
            var audio = new Audio('sounds/kick-bass.mp3');
             audio.play();
                    break;
        default:
            break;
    }

}

您的

發出聲音(事件,鍵);

正在傳遞事件,並且 makesound 需要一個鍵作為第一個參數

我建議您委托並使用查找表

 const sounds = { 'KeyW': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/tom1.ogg', 'KeyA': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/tom2.ogg', 'KeyS': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/tom3.ogg', 'KeyD': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/pad1.ogg', 'KeyJ': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/snare1.ogg', 'KeyK': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/crash1.ogg', 'KeyL': 'https://www.virtualdrumming.com/drums/virtual-drum-sounds/hip-hop/kik.ogg' } const play = sound => { console.log("playing",sound) var audio = new Audio(sound); audio.play(); } document.getElementById('drumSet').addEventListener('click', function(e) { const tgt = e.target.closest('button'); if (tgt) play(sounds[tgt.id]) }) window.addEventListener('keypress', function(e) { console.log(e.code) if (sounds[e.code]) { console.log("clicking",e.code) document.getElementById(e.code).click() } })
 <div id="drumSet"> <button id="KeyW">Tom 1</button> <button id="KeyA">Tom 2</button> <button id="KeyS">Tom 3</button> <button id="KeyD">Tom 4</button> <button id="KeyJ">Snare</button> <button id="KeyK">Crash</button> <button id="KeyL">Kick-bass</button> </div>

使用 makesound(event.key); 這將調用您的關鍵參數 function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM