2016-03-07 60 views
0

遵循关于使用HTML5进行游戏开发的教程。当我按下键盘上的up键时,我无法弄清楚为什么这段代码不会显示警报。为什么警告不显示?

var canvas = document.getElementById("mainCanvas"); 
var context = canvas.getContext("2d"); 

var keys = []; 

window.addEventListener("keydown", function(e) { 
    keys[e.keyCode] = true; 
}, false); 

window.addEventListener("keyup", function(e) { 
    delete keys[e.keyCode] 
}, false); 

if (keys[38]) alert("yep"); 

中的Chrome控制台清楚地表明,keys[38]true并在控制台输入if (keys[38]) alert("yep");显示警报。我认为我错过了一个基本的东西(或从根本上来说是愚蠢的)。如果JS代码中没有明显的错误,我会很乐意提供更多信息。

谢谢!

+0

当你觉得'什么/如果(键[38])警报(“yep”);'在做什么?如果在键入任何键之前运行。 – epascarello

+2

更重要的是,**当你认为它正在做它。 – Quentin

+0

当JavaScript引擎解析该行时,“keys [38]”仍未定义。和2011年的MacBook Pro在这里没有关系。 –

回答

2

if将在您的打勾结束时被调用。一旦你离开那个刻度,听众就会开始射击。因此,执行if时,keys阵列不可能被设置。

之后将会调用的代码的唯一部分是传递给​​和keyup事件的两个回调。如果你想对这些事件做出反应,你的代码应该位于之内。

1

你需要把你的代码(alert事件监听器,如下:

window.addEventListener("keydown", function(e) { 
 
    if(e.keyCode == 38) { 
 
    alert('BOOYAKA'); 
 
    } 
 
}, false);