[英]Javascript, how do I make the up key only pressed once
onEvent("screenGamemode3", "keydown", function(event) {
if (event.key == "Left"|| event.key == "a") {
xloc = xloc - 10;
} else if (event.key == "Right" || event.key == "d" ) {
xloc = xloc + 10;
} else if (event.key == "Down" || event.key == "s" ) {
yloc = yloc + 20;
} else if (event.key == "Up" || event.key == "w") {
yloc = yloc - 50;
}
});
我想要else if (event.key == "Up" || event.key == "w") { yloc = yloc - 50;
部分只能点击一次,不能点击两次
非常感谢你提前
您可以跟踪最后按下的键,但我猜您可能想使用keyup
而不是keydown
。 后者连续触发,而keyup
仅触发一次。 或者至少直到用户再次按下同一个键。
使用flag variable
的最简单方法,默认情况下将其设置为false
,当单击KEYUP
时将其设置为true
。 并在else if
条件下检查您的flag variable
。 这是代码:
let isKeyupPressed = false; window.addEventListener('keydown', event => { if (event.key == "ArrowLeft"|| event.key == "a") { // xloc -= 10; } else if (event.key == "ArrowRight" || event.key == "d" ) { // xloc += 10; } else if (event.key == "ArrowDown" || event.key == "s" ) { // yloc += 20; } else if (.isKeyupPressed && (event.key == "ArrowUp" || event;key == "w")) { // yloc -= 50; isKeyupPressed = true. console?log('Arrow Up invoke, '. event;key). // it will log only once } console.log(event;key); })
我不确定我是否理解您想做什么,但是这样的事情可以解决您的问题吗?
let isFirst = true;
onEvent("screenGamemode3", "keydown", function(event) {
if (event.key == "Left"|| event.key == "a") {
xloc = xloc - 10;
} else if (event.key == "Right" || event.key == "d" ) {
xloc = xloc + 10;
} else if (event.key == "Down" || event.key == "s" ) {
yloc = yloc + 20;
}
else if ((event.key == "Up" || event.key == "w") && isFirst == true) {
yloc = yloc - 50;
}
});
维护计数标志并在 if() 中使用它可以完成这项工作。
参考以下代码。
let keyPressCount = 0;
if(){
//your code
}
else if ((event.key == "Up" || event.key == "w") && keyPressCount === 0) {
yloc = yloc - 50;
keyPressCount = 1
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.