Reputation: 1
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;
}
});
I want the else if (event.key == "Up" || event.key == "w") { yloc = yloc - 50;
part only clickable once and not be able to get clicked twice
Thank you so much in advance
Upvotes: 0
Views: 63
Reputation: 5427
The easiest way to use a flag variable
, by default set it to false
and when KEYUP
is clicked - set it to true
. And check also your flag variable
in your else if
condition. Here is the code:
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);
})
Upvotes: 0
Reputation: 552
Maintaining a count flag & using it in the if(), can do the job.
refer following code.
let keyPressCount = 0;
if(){
//your code
}
else if ((event.key == "Up" || event.key == "w") && keyPressCount === 0) {
yloc = yloc - 50;
keyPressCount = 1
}
Upvotes: 0
Reputation: 90
I'm not sure I understand what you want to do, but can something like this resolve your problem ?
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;
}
});
Upvotes: 0
Reputation: 3918
You could keep track of the last pressed key, but I'm guessing you probably want to use keyup
instead of keydown
. The latter is fired continuously while keyup
is only fired once. Or at least until the user presses the same key again.
Upvotes: 1