Javascript键码在socket.io中不工作
我有一个游戏项目,允许用户使用箭头键或WASD四处移动。我有这个代码来实现这一点 在HTML文件中:Javascript键码在socket.io中不工作,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我有一个游戏项目,允许用户使用箭头键或WASD四处移动。我有这个代码来实现这一点 在HTML文件中: document.onkeydown = function(event){ if(event.keycode === 87 || event.keycode === 38){ socket.emit("keyPress",{input: "up", state: true}); } else if(event.keyCode === 83 || event.key
document.onkeydown = function(event){
if(event.keycode === 87 || event.keycode === 38){
socket.emit("keyPress",{input: "up", state: true});
} else if(event.keyCode === 83 || event.keycode === 40){
socket.emit("keyPress",{input: "down", state: true});
} else if(event.keyCode === 65 || event.keycode === 37){
socket.emit("keyPress",{input: "left", state: true});
} else if(event.keyCode === 68 || event.keycode === 39){
socket.emit("keyPress",{input: "right", state: true});
}
};
document.onkeyup = function(event){
if(event.keyCode == 87 || event.keycode === 38){
socket.emit("keyPress",{input: "up", state: false});
} else if(event.keyCode == 83 || event.keycode === 40){
socket.emit("keyPress",{input: "down", state: false});
} else if(event.keyCode == 65 || event.keycode === 37){
socket.emit("keyPress",{input: "left", state: false});
} else if(event.keyCode == 68 || event.keycode === 39){
socket.emit("keyPress",{input: "right", state: false});
}
};
现在在JavaScript文件中:
socket.on("keyPress",function(data){
if(data.input == "up"){
player.up = data.state;
} else if(data.input == "down"){
player.down = data.state;
} else if(data.input == "left"){
player.left = data.state;
} else if(data.input == "right"){
player.right = data.state;
}
});
var Player = function(id){
var self = {
x: 250,
y:250,
id: id,
up: false,
down: false,
left: false,
right: false,
speed: 5
};
self.updatePosition = function(){
if(self.up){
self.y -= self.speed;
} else if(self.down){
self.y += self.speed;
} else if(self.left){
self.x -= self.speed;
} else if(self.right){
self.x += self.speed;
}
if(self.x < 0){
self.x = 0;
} else if(self.x > 500){
self.x = 500;
} else if(self.y < 0){
self.y = 0;
} else if(self.y > 500){
self.y = 500;
}
}
return self;
}
socket.on(“按键”),功能(数据){
如果(data.input==“向上”){
player.up=data.state;
}else if(data.input==“down”){
player.down=data.state;
}else if(data.input==“left”){
player.left=data.state;
}else if(data.input==“right”){
player.right=data.state;
}
});
var Player=函数(id){
var self={
x:250,
y:250,
id:id,
上:错,
唐:错,
左:错,
右:错,
速度:5
};
self.updatePosition=函数(){
if(self.up){
self.y-=自速度;
}else if(self.down){
self.y+=自速度;
}else if(self.left){
self.x-=自速度;
}else if(self.right){
self.x+=自速度;
}
if(self.x<0){
self.x=0;
}否则如果(self.x>500){
自身x=500;
}else if(self.y<0){
self.y=0;
}否则,如果(自y>500){
自身y=500;
}
}
回归自我;
}
但是,箭头键和W键不起作用。ASD键工作得非常好
为什么箭头键和W键不起作用?代码中的钥匙代码以及位置更新正确。我应该如何使其工作?
keyCode
!==<代码>键代码。。。。使用keyCode
-提示:javascript区分大小写请查看MDN对以下内容的说明:“此功能已从Web标准中删除。尽管某些浏览器可能仍然支持它,但它正在被删除。避免使用,并尽可能更新现有代码;请参阅本页底部的兼容性表以指导您的决策。请注意,此功能可能随时停止工作。“此外,不要与keyup和keydown事件一起使用,最好使用keypress。哦,我没有看到@JaromandaX感谢您的帮助。