[英]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.