2

我目前正在使用 Javascript 进行 Pong 游戏教程。我正处于需要通过按某些键使 2 个蝙蝠移动的地步。当我按 K、M、A 或 Z 时,球棒应该会移动。但它们根本不动。我的 IDE 说“变量 e 隐藏参数”。这是我目前正在使用的代码:

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;
4

3 回答 3

1

将第 2 行更改var e = ...e = ...

尝试通过放置断点switch (key)并查看keyand来解决问题,或者如果您还不熟悉调试器,请e编写。console.log("E: " + e + " KEY: " + key)

我不确定这是否有必要——可能没有——但我对这些事情很偏执,所以为了安全起见,我会推后,在它和它所连接else if的语句之间没有新的界限。if

于 2012-10-30T19:24:09.893 回答
1

您正在使用以下代码创建变量 e:

var e = window.event ? event : e ;

它存在于 batupdate 函数的范围内。您还将一个参数传递给该函数,其标记为 e。

基本上,您对 2 个不同的事物使用相同的名称,这是有问题的。试试这个:

e = window.event ? event : e ;
于 2012-10-30T19:25:41.140 回答
0

问题不在于您向我们展示的代码。你可以在这里看到这个:http: //jsfiddle.net/K6MRu/

Bat[LR].move()接听电话是因为我们没有他们的实施,并用显示相同数据的警报替换它们。你会看到它工作得很好。这意味着问题必须出在BatL和/或BatR变量的值或move()函数的实现中。

您的 IDE 给出的消息实际上根本不是问题,因为它只是意味着您无法访问您不想访问的内容。var您可以按照其他人的建议通过删除in来使消息消失var e = window.event ? event : e;,我建议您这样做,但这并不能解决蝙蝠不动的问题。

于 2012-10-30T19:45:52.777 回答