使用 jquery "keypress" 函数时如何禁用按键加速?
how would i disable keypress ramp-up when using jquery "keypress" function?
https://jsfiddle.net/pk2dLxuy/ 是我的 fiddle.
$(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" 键时,它开始时会很慢,然后会加速到全速。
我如何才能让它在按住密钥时始终以全速登录到控制台?
我 运行 在 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>
https://jsfiddle.net/pk2dLxuy/ 是我的 fiddle.
$(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" 键时,它开始时会很慢,然后会加速到全速。
我如何才能让它在按住密钥时始终以全速登录到控制台?
我 运行 在 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>