Javascript 如何让玩家同时向两个不同的方向移动?
我一直在尝试测试我的按键技能,并制作了一支带有“玩家”移动的新笔。 但是我还没有弄明白如何让玩家朝两个不同的方向移动(例如斜向移动)。有人知道我当前编写的代码中缺少了什么吗? 非常感谢您的帮助 以下是我目前的代码: https://codepen.io/Skysurfer_kon/pen/bawnqb?editors=1010Javascript 如何让玩家同时向两个不同的方向移动?,javascript,html,animation,Javascript,Html,Animation,我一直在尝试测试我的按键技能,并制作了一支带有“玩家”移动的新笔。 但是我还没有弄明白如何让玩家朝两个不同的方向移动(例如斜向移动)。有人知道我当前编写的代码中缺少了什么吗? 非常感谢您的帮助 以下是我目前的代码: https://codepen.io/Skysurfer_kon/pen/bawnqb?editors=1010 (链接被拆除,要继续链接,请将https:to组合到其他链接)即使按下多个键,每个keydown和keydup都会触发事件 因此,您可以使用一个keysmap对象来存储新
(链接被拆除,要继续链接,请将https:to组合到其他链接)即使按下多个键,每个
keydown
和keydup
都会触发事件
因此,您可以使用一个keys
map对象来存储新的keydown
事件发生时按下的键
已更新您的代码。现在可以了
<body>
<div><img id = "player" src="https://i.ibb.co/3zzPvKT/Annoying-Dog-sprite.png"></div>
</body>
<script>
var frame = 0;
var y = 6;
var x = 453;
var facingleft = true;
var facingright = false;
var keys = {};
document.addEventListener("keyup", (e) => {
keys[e.keyCode] = false;
});
document.addEventListener("keydown", (e) => {
keys[e.keyCode] = true;
if (keys[37]) {
frame++;
x -= 5;
player.style.left= (x) + "px";
if (frame == 1) {
player.src = 'https://i.ibb.co/0t55kL0/doggo-00.png';
}
if (frame == 2) {
player.src = 'https://i.ibb.co/Y3q13J6/doggo-01.png';
}
if (frame == 3) {
frame = 1;
player.src = 'https://i.ibb.co/0t55kL0/doggo-00.png';
}
}
if (keys[39]) {
x += 5;
frame++;
player.style.left = (x) + "px";
if (frame == 1) {
player.src = 'https://i.ibb.co/NLHJBnJ/doggo-02.png';
}
if (frame == 2) {
player.src = 'https://i.ibb.co/N135wtG/doggo-03.png';
}
if (frame == 3) {
frame = 1;
player.src = 'https://i.ibb.co/NLHJBnJ/doggo-02.png';
}
}
if (keys[40]) {
if (y > 200) {
player.style.top = (y);
}
if (y < 200) {
y += 5;
player.style.top = (y) + "px";
}
}
});
</script>
var帧=0;
变量y=6;
var x=453;
var facingleft=真;
var facingright=错误;
var键={};
文件。添加的文件列表器(“键控”,(e)=>{
密钥[e.keyCode]=假;
});
文件。添加的文件列表器(“向下键控”,(e)=>{
键[e.keyCode]=真;
如果(键[37]){
frame++;
x-=5;
player.style.left=(x)+“px”;
如果(帧==1){
player.src=https://i.ibb.co/0t55kL0/doggo-00.png';
}
如果(帧==2){
player.src=https://i.ibb.co/Y3q13J6/doggo-01.png';
}
如果(帧==3){
帧=1;
player.src=https://i.ibb.co/0t55kL0/doggo-00.png';
}
}
如果(键[39]){
x+=5;
frame++;
player.style.left=(x)+“px”;
如果(帧==1){
player.src=https://i.ibb.co/NLHJBnJ/doggo-02.png';
}
如果(帧==2){
player.src=https://i.ibb.co/N135wtG/doggo-03.png';
}
如果(帧==3){
帧=1;
player.src=https://i.ibb.co/NLHJBnJ/doggo-02.png';
}
}
如果(键[40]){
如果(y>200){
player.style.top=(y);
}
如果(y<200){
y+=5;
player.style.top=(y)+“px”;
}
}
});
可能重复。经历一次。请考虑在这里证明,而不是我们需要去寻找任何代码。不要只是破坏链接来绕过使用外部示例发布代码的要求。但是我不知道如何将我的代码复制粘贴到堆栈溢出中。。