javascript事件侦听器不工作
我想做一个startscreen,当用户按下空格键但我的代码不起作用时,它可以启动游戏javascript事件侦听器不工作,javascript,Javascript,我想做一个startscreen,当用户按下空格键但我的代码不起作用时,它可以启动游戏 var level1 = false var keys = []; window.addEventListener("keydown", function(e){ keys[e.keyCode] = true; }, false) window.addEventListener("keyup", function(e){ delete keys[e.keyCode]; }, false)
var level1 = false
var keys = [];
window.addEventListener("keydown", function(e){
keys[e.keyCode] = true;
}, false)
window.addEventListener("keyup", function(e){
delete keys[e.keyCode];
}, false)
context.font = "bold 35px Arial";
context.fillText("Press Space to Start", 290,300);
if(keys[32]){
level1 = true;
}
但当我按下空格键时,变量level1仍然为false。我已经用谷歌浏览器控制台检查过了
但当我按下空格键时,变量level1仍然为false
对。为什么会是别的呢?事件处理程序中没有任何内容正在更新它
如果要在事件发生时更新它,请在事件处理程序中更新它
可能有一个函数,用于更新要跟踪密钥状态的任何变量的状态,并从两个事件处理程序调用它:
var level1 = false
var keys = [];
window.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
checkKeyState();
}, false)
window.addEventListener("keyup", function(e) {
delete keys[e.keyCode];
checkKeyState();
}, false)
context.font = "bold 35px Arial";
context.fillText("Press Space to Start", 290, 300);
function checkKeyState() {
if (keys[32]) {
level1 = true;
} else {
level1 = false;
}
}
请注意,
checkKeyState
也可以写入:
function checkKeyState() {
level1 = !!keys[32];
}
…但我不想在第一个代码块中把它扔给你
但当我按下空格键时,变量level1仍然为false
对。为什么会是别的呢?事件处理程序中没有任何内容正在更新它
如果要在事件发生时更新它,请在事件处理程序中更新它
可能有一个函数,用于更新要跟踪密钥状态的任何变量的状态,并从两个事件处理程序调用它:
var level1 = false
var keys = [];
window.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
checkKeyState();
}, false)
window.addEventListener("keyup", function(e) {
delete keys[e.keyCode];
checkKeyState();
}, false)
context.font = "bold 35px Arial";
context.fillText("Press Space to Start", 290, 300);
function checkKeyState() {
if (keys[32]) {
level1 = true;
} else {
level1 = false;
}
}
请注意,
checkKeyState
也可以写入:
function checkKeyState() {
level1 = !!keys[32];
}
…但我不想在第一个代码块中向您抛出这个问题。在您提供的示例代码中,检查键[32]的if语句在触发任何事件之前运行。因此,您需要将if语句的主体移动到keydown事件函数中:
window.addEventListener("keydown", function(e){
keys[e.keyCode] = true;
level1 = true;
}, false);
在您提供的示例代码中,检查键[32]的if语句在触发任何事件之前运行。因此,您需要将if语句的主体移动到keydown事件函数中:
window.addEventListener("keydown", function(e){
keys[e.keyCode] = true;
level1 = true;
}, false);
if
条件不应该在keydown
事件监听器内吗?if条件不应该在keydown
事件监听器内吗?为什么要投否决票?考虑到原始代码,这是一个有效的回答。为什么投反对票?给定原始代码,这是一个有效的响应。