簡體   English   中英

Javascript,如何讓向上鍵只按一次

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM