Javascript Pong游戏移动蝙蝠

时间:2012-10-30 19:20:49

标签: javascript onkeypress pong

我目前正在使用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;

3 个答案:

答案 0 :(得分:1)

将第2行中的var e = ...更改为e = ...

尝试通过在switch (key)上设置断点并查看keye来解决问题,或者如果您还不熟悉调试器,则编写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;来消除此消息,我建议您这样做,但这不会解决您的蝙蝠不移动的问题。