Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我似乎无法在javascript中使用按键处理_Javascript_Html - Fatal编程技术网

我似乎无法在javascript中使用按键处理

我似乎无法在javascript中使用按键处理,javascript,html,Javascript,Html,我查看了许多关于StackOverflow的已回答问题,并实现了我认为正确的代码,但我无法用键盘按键移动我的角色。这里有什么问题 Javascript文件 var key = []; document.addEventListener('keydown', function(e){ handleKeyPress(e); }); onkeydown = onkeyup = function(e){ e = e || event; map[e.keyC

我查看了许多关于StackOverflow的已回答问题,并实现了我认为正确的代码,但我无法用键盘按键移动我的角色。这里有什么问题

Javascript文件

var key = []; 

document.addEventListener('keydown',
    function(e){
        handleKeyPress(e);
});


onkeydown = onkeyup = function(e){
    e = e || event;
    map[e.keyCode] = e.type == 'keydown';
    if (key[65]){ //'a' is pressed
        if (crxpos > 8)
            crxpos-=8;
    }
    else if (key[68]){ //'d' is pressed
        if (crxpos < 1280 - 40)
                crxpos+=8;
    }
    else if (key[83]){ //'s' is pressed
        if (crypos < 720 - 40)
                crypos+=8;
    }
    else if (key[87]){ //'w' is pressed
        if (crypos > 8)
                crypos-=8;
    }
}
var map = document.getElementById("map");
var ctx = map.getContext("2d");
var dt = 1000 / 30.0;

var caverunner = new Image();
caverunner.src = "caverunner.png";
caverunner.addEventListener("load", drawImage);
var crxpos = 1280 / 2 - 4;
var crypos = 720 / 2 - 4;

function drawImage(){
    setInterval(update, dt);
}

function update(){
    ctx.clearRect(0, 0, 1280, 720);
    ctx.drawImage(caverunner, crxpos, crypos);
}
var-key=[];
文件.添加的文件列表器('keydown',
职能(e){
手动按键(e);
});
onkeydown=onkeyup=功能(e){
e=e | |事件;
map[e.keyCode]=e.type=='keydown';
如果按下(键[65]){/'a'
如果(crxpos>8)
crxpos-=8;
}
否则,如果按下(键[68]){/'d'
如果(crxpos<1280-40)
crxpos+=8;
}
否则,如果按下(键[83]){/'s'
如果(crypos<720-40)
crypos+=8;
}
否则,如果按下(键[87]){/'w'
如果(crypos>8)
crypos-=8;
}
}
var map=document.getElementById(“map”);
var ctx=map.getContext(“2d”);
var dt=1000/30.0;
var caverunner=新图像();
caverunner.src=“caverunner.png”;
caverunner.addEventListener(“加载”,drawImage);
var crxpos=1280/2-4;
var-crypos=720/2-4;
函数drawImage(){
设置间隔(更新,dt);
}
函数更新(){
ctx.clearRect(0,01280720);
ctx.drawImage(caverunner、crxpos、crypos);
}
HTML文件

<!DOCTYPE html>
<html>
<style type="text/css" media="all"> @import "canvas.css"; </style>
<body>

<h1>Cave</h1>
<canvas id="map" width="1280" height="720" style="border:1px solid #000000;"></canvas>
<p> </p>
<script src="cave.js"> </script>

</body>
</html> 

@导入“canvas.css”;
洞穴


您将关键事件绑定到哪里以及绑定到哪个元素<代码>onkeydown=onkeyup=函数(e){仅定义一个变量。您需要将事件绑定到元素。请阅读有关事件侦听器及其工作方式的信息。您必须指定一个元素来侦听按键。因此,我已经阅读了您链接的页面,对这些事件侦听器的工作方式有了很好的了解,但仍然有点困惑。我对我的程序有什么最好的猜测我需要在某个地方添加一行代码e.addeventlistener(“somethinghere”)我不知道引用的内容是什么,也不知道应该把它放在我的代码中的什么地方,有什么想法吗?我还在帖子中编辑我的代码以展示我的最新尝试!这是我使用事件侦听器所得到的,我的代码不起作用,有什么帮助吗?你在哪里绑定关键事件以及绑定到什么元素?
onkeydown=onkeydup=function(e){
仅定义一个变量。您需要将事件绑定到元素。请阅读有关事件侦听器及其工作方式的信息。您必须指定一个元素来侦听按键。因此,我已经阅读了您链接的页面,对这些事件侦听器的工作方式有了很好的了解,但仍然有点困惑。我对我的程序有什么最好的猜测需要是我需要添加一行代码的地方。addeventlistener(“somethinghere”)我不确定引用的内容是什么,也不确定将其放在我的代码中的什么位置,有什么想法吗?我还在帖子中编辑我的代码以显示我的最新尝试!这是我使用事件侦听器所得到的结果,我的代码不起作用,有什么帮助吗?