使用socket.io进行键盘输入
目前,我已经能够让精灵移动使用鼠标,但我坚持让它移动使用键盘 客户端代码缩短:使用socket.io进行键盘输入,socket.io,sprite,Socket.io,Sprite,目前,我已经能够让精灵移动使用鼠标,但我坚持让它移动使用键盘 客户端代码缩短: var Client = {}; Client.socket = io.connect(); Client.sendClick = function(x,y){ Client.socket.emit('click',{x:x,y:y}); }; Client.socket.on('move',function(data){ Game.movePlayer(data.id,data.x,data.y
var Client = {};
Client.socket = io.connect();
Client.sendClick = function(x,y){
Client.socket.emit('click',{x:x,y:y});
};
Client.socket.on('move',function(data){
Game.movePlayer(data.id,data.x,data.y);
});
socket.on('click',function(data){
console.log('click to '+data.x+', '+data.y);
socket.player.x = data.x;
socket.player.y = data.y;
io.emit('move',socket.player);
});
服务器代码缩短:
var Client = {};
Client.socket = io.connect();
Client.sendClick = function(x,y){
Client.socket.emit('click',{x:x,y:y});
};
Client.socket.on('move',function(data){
Game.movePlayer(data.id,data.x,data.y);
});
socket.on('click',function(data){
console.log('click to '+data.x+', '+data.y);
socket.player.x = data.x;
socket.player.y = data.y;
io.emit('move',socket.player);
});
我试过类似的方法
Client.sendKey = function(data){
switch(data.keyCode)
{
case 40:
Client.socket.emit('movement', data.y - 10);
break;
case 38:
Client.socket.emit('movement', data.y + 10);
break;
case 37:
Client.socket.emit('movement', data.x - 10);
break;
case 39:
Client.socket.emit('movement', data.x + 10);
break;
}
});
这将是一个如何在游戏循环场景中处理关键码的示例,如果您不将其作为游戏的一部分使用,它也可能具有可塑性。我还假设您使用JavaScript,不过如果我错了,我会删除这个答案
//keys array
var keys = [];
//Bind document event listeners
document.addEventListener('keyup', keyUp);
document.addEventListener('keydown', keyDown);
function moveClient(KeyCodeArr) {
//if a key code is true then it means the key has been pressed.
if (KeyCodeArr[40]) {
Client.socket.emit('movement', data.y - 10);
}
if (KeyCodeArr[38]) {
Client.socket.emit('movement', data.y + 10);
}
if (KeyCodeArr[37]) {
Client.socket.emit('movement', data.x - 10);
}
if (KeyCodeArr[39]) {
Client.socket.emit('movement', data.x + 10);
}
}
/**
* These two events handle
*/
//key down event for use with listener
function keyDown(event) {
keys[event.keyCode] = true;
}
//key up event for use with event listener
function keyUp(event) {
keys[event.keyCode] = false;
}
//main in this example would be a game loop.
function main() {
moveClient();
}
这将是一个如何在游戏循环场景中处理关键码的示例,如果您不将其作为游戏的一部分使用,它也可能具有可塑性。我还假设您使用JavaScript,不过如果我错了,我会删除这个答案
//keys array
var keys = [];
//Bind document event listeners
document.addEventListener('keyup', keyUp);
document.addEventListener('keydown', keyDown);
function moveClient(KeyCodeArr) {
//if a key code is true then it means the key has been pressed.
if (KeyCodeArr[40]) {
Client.socket.emit('movement', data.y - 10);
}
if (KeyCodeArr[38]) {
Client.socket.emit('movement', data.y + 10);
}
if (KeyCodeArr[37]) {
Client.socket.emit('movement', data.x - 10);
}
if (KeyCodeArr[39]) {
Client.socket.emit('movement', data.x + 10);
}
}
/**
* These two events handle
*/
//key down event for use with listener
function keyDown(event) {
keys[event.keyCode] = true;
}
//key up event for use with event listener
function keyUp(event) {
keys[event.keyCode] = false;
}
//main in this example would be a game loop.
function main() {
moveClient();
}
您使用的客户端语言是什么@luke Sturgess您使用的客户端语言是什么@卢克·斯特吉斯