>

이 코드로 두 개의 키보드 화살표가 동시에 눌러지는 것을 감지하려고 시도했습니다.

document.addEventListener('keydown', event => {
    if (event.keyCode === 38) {
        console.log('up Arrow')
    }
    if (event.keyCode === 39) {
        console.log('right Arrow')
    }
})

그러나 작동하지 않지만 정확히 동시에 누르는 것은 어렵습니다.

이 문제를 깨끗하게 해결하고 두 키가 다운 된 시점을 어떻게 감지 할 수 있습니까?

  • 답변 # 1

    keyCode 는 하나뿐입니다  이벤트 당. 아래로 내려가는 키를 추적해야합니다.

    // if you keep both up and down keys down, you'll get a message
    let downKeys = {}; // the set of keys currently down
    document.addEventListener('keydown', event => {
        downKeys[event.keyCode] = true;
        if (downKeys[38] && downKeys[40]) {
           console.log("both down!");
        }
    });
    document.addEventListener('keyup', event => {
        downKeys[event.keyCode] = false;
    });
    
    

    (이 스 니펫을 테스트하려면 전체 페이지로 이동해야합니다)

  • 답변 # 2

    여기서 2 개의 플래그를 사용하여 키를 잡고 있는지 확인합니다.

    두 플래그가 모두 참이면 두 키를 모두 들고 있음을 의미합니다. 조건 내에서 무엇이든 수행 할 수 있습니다.

    let holdKeyUp = false;
    let holdKeyRight = false;
    document.addEventListener('keydown', event => {
        if (event.keyCode === 38) {
            holdKeyUp = true;
        }
        if (event.keyCode === 39) {
            holdKeyRight = true;
        }
        
        if (holdKeyUp && holdKeyRight) {
            console.log("Both keys are pressed.");
        }
    })
    document.addEventListener('keyup', event => {
        if (event.keyCode === 38) {
            holdKeyUp = false;
        }
        if (event.keyCode === 39) {
            holdKeyRight = false;
        }
    })
    
    

  • 이전 python - 팬더에서 열과 자체 비교
  • 다음 swift - 로드 된 뷰에서 탭을 선택하고 세그먼트를 변경하십시오