我正在制作一个HTML游戏,其中我必须调用跳转和步行功能,以便使用键盘键分别跳跃和行走。但我无法这样做!! 这是我的代码:
document.getElementById('myCanvas').onkeypress = function() {
decision();
}
function decision(e){
if (e.keyCode == 87) {
jump();
}
if(e.keyCode == 68) {
walk();
}
}
即与' w'关键是它必须跳起来并且用'' d'关键它走了。!!
答案 0 :(得分:2)
function decision(e){
var keyCode = e.keyCode || e.charCode;
if (keyCode === 87) {
jump();
}
if(keyCode === 68) {
walk();
}
}
document.getElementById('myCanvas').onkeypress = decision;
你没有将e参数传递给回调,所以我很惊讶它并没有像未定义的那样爆炸。
另请注意我如何将decision
函数引用直接分配给onkeypress
属性,而不是将其包装在匿名函数中。这会根据需要直接传递参数,并带有预期的Window
上下文(虽然取决于回调中的特定this
要求,但这种方法可能并不总是合适的。)
此外,请确保只有在确定其可用后才能通过id查询元素(即,在目标节点出现在DOM之后将此代码放在某处,或使用类似jQuery的框架)
最后,e.keyCode
可能没有按照您的预期在所有浏览器中定义,因此您可能希望如上所述防范此问题。
答案 1 :(得分:0)
尝试
document.getElementById('myCanvas').onkeypress = function(e) {
decision(e);
}
function decision(e){
if (e.which == 87) {
jump();
}
if(e.which == 68) {
walk();
}
}
另请注意,您可以使用e.which
或e.keyCode
或e.charCode
。只需检查所有它们,这取决于浏览器。
答案 2 :(得分:0)
您没有将事件e传递给decision()
函数
document.getElementById('myCanvas').onkeypress = function(e) {
decision(e);
}
function decision(e){
var key = e.keyCode ? e.keyCode : e.which;
if (key == 87) {
jump();
}
if(key == 68) {
walk();
}
}