Как отключить увеличение нажатия клавиш при использовании функции jquery «нажатие клавиш»? - PullRequest
0 голосов
/ 30 декабря 2018

https://jsfiddle.net/pk2dLxuy/ - моя скрипка.

$(document).keypress(function(keydetect) {
if(keydetect.which == 119) {
       console.log("w")
    }
if(keydetect.which == 97) {
       console.log("a")
    }
if(keydetect.which == 115) {
       console.log("s")
    }
if(keydetect.which == 100) {
       console.log("d")
    }
});

В настоящее время эта программа, когда активирована, обнаруживает любую из клавиш «WASD» и выводит их в консоль.

но, когда вы начинаете удерживать одну из клавиш «WASD», она запускается медленно, затем она набирает полную скорость.

как бы мне сделать так, чтобы она всегда подключалась кконсоль на полной скорости, пока удерживается ключ?

1 Ответ

0 голосов
/ 30 декабря 2018

Я запустил это на Mac с кодом ниже.Начальная задержка есть, но я боюсь, что это задержка повторения внешнего ключа.Не под вашим контролем.Чтобы обойти это, вам понадобится цикл, в котором состояние клавиши устанавливается нажатием клавиши и повторяется.С отменой ключа вверх.Это позволит вам лучше контролировать его и не зависеть от системы.Имеет ли это смысл?

var key;
var count = 0;

const setKey = (keyPressed) => {
  if(keyPressed != key) {
    count = 0;
    key = keyPressed;
    } else { 
    count++;
    }
    document.querySelector('#key').innerHTML = count;
};

$(document).keypress(function(keydetect) {
if(keydetect.which == 119) {
       console.log("w");
       setKey('w');
    }
if(keydetect.which == 97) {
       console.log("a");
       setKey('a');
    }
if(keydetect.which == 115) {
       console.log("s");
       setKey('s');
    }
if(keydetect.which == 100) {
       console.log("d");
       setKey('d');
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="key"></div>
...