window.addEventListener("keyup", addkey);
function addkey(){
var x = event.which || event.keyCode;
var wkey = 0;
var op = 0;
if(x == 87){
wkey += 1;
}
if(wkey == 1 && op == 0){
alert("your doing good!");
op = op + 1;
}
}

我试图在这里发生的事情是让警报语句只运行一次,但我不能让它以任何方式工作。我试过使用一个真或假的数字系统(op变量),但这个dident工作。我所看到的是当代码运行并且keyup事件触发wkey变量更新一次并保持1时甚至知道每次按下w键时它应该是一个数字。无论如何,我正在制作这个代码,以配合我制作游戏的教程。我愿意接受的任何建议。
答案 0 :(得分:3)
这是因为每次调用函数时都会重新初始化op
到0
。你可以简单地在op
之外对addkey
进行delcare,它会起作用:
window.addEventListener("keyup", addkey);
var op = 0;
var wkey = 0;
function addkey(event){
var x = event.which || event.keyCode;
if(x == 87){
wkey += 1;
}
if(wkey == 1 && op == 0){
alert("your doing good!");
op += 1;
}
}

如果要成功计算按下次数,您还需要将wkey
的声明拉出函数。
答案 1 :(得分:0)
因为你在每个函数运行中定义wkey
和op
,你应该在函数中定义它们,以使它按预期工作。
答案 2 :(得分:0)
每次调用该函数时,
wkey
设置为0
,
然后添加1
,
所以它总是等于1
尝试在功能之外将wkey
定义为0
。
或者
if(wkey == null) var wkey = 0;
代替。
如果使用此方法,op
是不必要的。 (当然,除非你在其他地方使用它的价值。)