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”键之一时,它会缓慢启动,然后逐渐上升到全速。
我如何做到这一点,以便在按住键的同时始终以全速登录控制台?
答案 0 :(得分:1)
我在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>