我目前正在使用Javascript进行Pong游戏教程。通过按某些键,我需要让2只蝙蝠移动。当我按下K,M,A或Z时,蝙蝠应该移动。但它们根本不移动。我的IDE说'变量隐藏参数'。 这是我目前正在使用的代码:
batupdate = function(e) {
var e = window.event ? event : e;
if (e.keyCode)
{
key = e.keyCode;
}
else if (typeof (e.which) != 'undefined')
{
key = e.which;
}
switch (key)
{
case (122):
BatL.move(1);
break;
case (97):
BatL.move(-1);
break;
case (107):
BatR.move(-1);
break;
case (109):
BatR.move(1);
break;
}
}
document.onkeypress = batupdate;
答案 0 :(得分:1)
将第2行中的var e = ...
更改为e = ...
尝试通过在switch (key)
上设置断点并查看key
和e
来解决问题,或者如果您还不熟悉调试器,则编写console.log("E: " + e + " KEY: " + key)
。
我不确定是否有必要 - 可能不是 - 但我对这些事情感到偏执,所以为了安全起见我会推动else if
回到它之间没有新的界限以及它所连接的if
语句。
答案 1 :(得分:1)
您正在使用代码创建变量e:
var e = window.event ? event : e ;
在batupdate函数的范围内存在。您还将参数传递给该函数,标记为e。
基本上你在2个不同的东西上使用相同的名称,这是有问题的。试试这个:
e = window.event ? event : e ;
答案 2 :(得分:0)
问题不在于您向我们展示的代码。你可以在这里看到:http://jsfiddle.net/K6MRu/
我取消了Bat[LR].move()
次来电,因为我们没有实施,并将其替换为显示相同数据的提醒。你会发现它运作得很好。这意味着问题必须在BatL
和/或BatR
变量的值或move()
函数的实现中。
您的IDE提供的消息实际上并不是一个问题,因为它只是意味着您无法访问您不想访问的内容。您可以通过移除其他人建议的var
中的var e = window.event ? event : e;
来消除此消息,我建议您这样做,但这不会解决您的蝙蝠不移动的问题。