我正在使用 JQuery 来监视 HTML 游戏的按键,但是每当我将 jquery 代码添加到我的游戏循环时,我都会收到关于未定义 keydown 的错误。
<html>
<head>
//...Included JS files JQuery, and a JQuery plugin to bind keydown
// to a variable and to translate all the keypresses into
// names so that we can monitor keypress by keydown.left...
</head>
<body>
<script type="text/javascript">
var gLoop;
//...code excluded for brevity...
var GameLoop = function() {
//...code excluded...
if(keydown.left) {
//do stuff
}
gLoop = setTimeout(GameLoop, 1000/50);
}
</script>
</body>
</html>
此代码收到一条错误消息,提示 keydown 未定义。当我尝试过这段代码时:
setInterval(function(){
if(keydown.left) alert("Working");
}, 1000/50);
它工作正常!我究竟做错了什么???我的完整代码在 GitHub 上。
我使用 jQuery 版本 1.4.4。我使用了https://raw.github.com/figitaki/PuzzleMan/master/key_status.js提供的热键插件,这是我用来绑定 keydown 的代码:
$(function() {
window.keydown = {};
function keyName(event) {
return jQuery.hotkeys.specialKeys[event.which] ||
String.fromCharCode(event.which).toLowerCase();
}
$(document).bind("keydown", function(event) {
keydown[keyName(event)] = true;
});
$(document).bind("keyup", function(event) {
keydown[keyName(event)] = false;
});
});
更新:
运行代码时不再出现错误,但按左键没有得到任何响应。