Javascript 如果函数在布尔值更改后未触发?
我有一个系统,一旦按下某个键,一个布尔值变为true,程序就会触发一个if循环。但是,一旦按下该键,程序将“锁定”且无响应。(程序应该自动移动拨片,整个程序应该可以关闭,但看起来好像根本没有激活。 以下是违规代码:Javascript 如果函数在布尔值更改后未触发?,javascript,if-statement,boolean,Javascript,If Statement,Boolean,我有一个系统,一旦按下某个键,一个布尔值变为true,程序就会触发一个if循环。但是,一旦按下该键,程序将“锁定”且无响应。(程序应该自动移动拨片,整个程序应该可以关闭,但看起来好像根本没有激活。 以下是违规代码: var aienable = false; $(document).keydown(function(keyPressed){ if (keyPressed.keyCode == 192 && aienable == false){ aiena
var aienable = false;
$(document).keydown(function(keyPressed){
if (keyPressed.keyCode == 192 && aienable == false){
aienable = true;
}
});
if (aienable == true){
var AIdrive = setInterval(function(){
$(document).keydown(function(keyPressed){
if (keyPressed.keyCode == 192 && aienable == true){
aienable = false;
}
});
if (aienable == false){
clearInterval(AIdrive);
}
},1000);
}
注意:代码中使用的键是`
if(aienable==true){
仅在之后执行一次
var aienable=false;
条件总是错误的。
按键时执行aienable
的更改值
第二个
if
应该在第一个if之后的keydown事件处理程序中。您必须将布尔条件代码放入一个函数中,并从keydown处理程序中调用它。按键后变量的值为true,但不会通知代码,因为它已经运行。if
语句需要在事件处理程序中。否则,当第一次解释该代码块时,它将只运行一次。同时添加一个新的“keydown”间隔计时器回调中的处理程序将是一场灾难。添加新处理程序时,不会删除以前添加的处理程序。如果是游戏,并且您有一个由setInterval()设置的函数fn
若要更改对象的位置,则您的按键处理程序只需更改一些变量,让拨片向左或向右移动。否则,如果只是按下一个键并开始某项操作,则您的按键可以调用setInterval()
来执行某项操作。这取决于您想要执行的操作