JavaScript 캡 처 와 동시에 여러 버튼 - 비 조합 키

7339 단어 JavaScript
사용자 가 두 개 이상 의 버튼 을 동시에 눌 렀 을 때 사용자 가 어떤 버튼 을 눌 렀 는 지 어떻게 판단 합 니까? 예 를 들 어 사용자 가 'A' 와 'H' 키 segment d 를 동시에 눌 렀 는 지 판단 하 는 Clark 가 제공 하 는 사고 (원문 링크): Ctl, alt 는 전문 적 으로 판단 하 는 속성 이 있 습 니 다.다른 그룹 이 라면 키 다운 때 push 가 Array 에 저장 되 어 있 고 키 업 할 때 해당 하 는 것 을 지 울 생각 이 있 습 니 다.키 다운 할 때마다 array 를 확인 하 세 요.마지막 실행 코드:
<img id="imgPlane" src="" alt="  " />

        <script type="text/javascript">
            var keyCodeArry = [];
            document.onkeydown = function(ev) {
                var oEvent = ev || event;
                keyCode = oEvent.keyCode;
                keyCodeArry = addKeyCodeArry(keyCode, keyCodeArry);
                console.log(keyCodeArry);
            }
            document.onkeyup = function(ev) {
                var oEvent = ev || event;
                keyCode = oEvent.keyCode;
                keyCodeArry = deletKeyCodeArry(keyCode, keyCodeArry);
                console.log(keyCodeArry);
            }

            function addKeyCodeArry(num, arr) {
                var check = 0;
                for(var i = 0; i < arr.length; i++) {
                    if(arr[i] == num) {
                        check = 1;
                    }
                }
                if(check == 0) {
                    arr.push(num);
                }
                return arr;
            }

            function deletKeyCodeArry(num, arr) {
                for(var i = 0; i < arr.length; i++) {
                    if(arr[i] == num) {
                        arr.splice(i, 1);
                    }
                }
                return arr;
            }

            var body = document.getElementsByTagName("body")[0];
            var x = 300;
            var y = 200;
            body.addEventListener("keydown", function(e) {
                console.log(e.keyCode);
                var imgPlane = document.getElementById("imgPlane");
                var speed = 10;
                console.log(x + " " + y);

                for(var i=0; i < keyCodeArry.length; i++) {
                    keyCode = keyCodeArry[i];
                    if(keyCode == 87) {
                        //w
                        y -= speed;
                    }

                    if(keyCode == 83) {
                        //s
                        y += speed;
                    }

                    if(keyCode == 65) {
                        //a
                        x -= speed;
                    }

                    if(keyCode == 68) {
                        //d
                        x += speed;
                    }
                }

                imgPlane.style.top = y + "px";
                imgPlane.style.left = x + "px";
            });

            function lan_Click() {
                var lan = document.getElementById("language");
                var lans = ["C", "C++", "Java", "Php", "C#"];
                if(lan.children.length == 0) {
                    for(var i = 0; i < lans.length; i++) {
                        var li = document.createElement("li");
                        li.innerHTML = lans[i];
                        //      
                        li.addEventListener("click", function(e) {
                            console.log(e.path[0].innerHTML);
                        });
                        lan.appendChild(li);
                    }
                } else {
                    lan.innerHTML = null;
                }
            }
        script>

W / A / S / D 버튼 을 눌 러 비행기의 이동 을 제어 하고 네티즌 들 의 사고방식 을 이용 하여 사선 이동 을 실현 할 수 있다.

좋은 웹페이지 즐겨찾기