我找到了一些解决方案,如:
function checkKey(e) {
e = e || window.event;
if (e.keyCode == '38') {
snakeDirection = "up";
}
else if (e.keyCode == '40') {
snakeDirection = "down";
}
else if (e.keyCode == '37') {
snakeDirection = "left";
}
else if (e.keyCode == '39') {
snakeDirection = "right";
}
}
但我不知道这个e
的意义,也不知道e = e || window.event;
有人可以解释一下吗?
答案 0 :(得分:0)
函数checkKey
意味着用作事件监听器,几乎可以肯定用于keydown
事件。尝试运行这个,你就会明白我的意思:
window.addEventListener('keydown', checkKey)
大多数现代浏览器中的事件侦听器采用单个参数,即事件对象,通常指定为e
(event
的缩写)。
但是,在某些旧版浏览器(即旧版Internet Explorer版本)中,事件对象未传递给侦听器;相反,可以使用全局window.event
属性访问它。如果您希望代码对这些浏览器具有灵活性,则必须预计e
可能不会被传递。这就是行e = e || window.event
存在的原因:它基本上表示"如果您无法找到变量e
,请将其设置为window.event
并继续。&#34 ;
此事件对象包含的属性有助于解释发生的事件的细节。例如,keyCode
事件对象上的属性keydown
会告诉您键盘上按了哪个键。但是,这些密钥代码的编号方式不容易记住,因此您使用的if
语句会出现奇怪的外观:
37
38
39
40