【问题标题】:Keyboard input using socket.io使用 socket.io 的键盘输入
【发布时间】:2017-04-27 17:46:58
【问题描述】:

目前我已经能够使用鼠标移动精灵,但我一直坚持使用键盘移动它

客户端代码缩短:

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;
}
});

【问题讨论】:

  • 您使用什么客户端语言? @luke Sturgess

标签: socket.io sprite


【解决方案1】:

这将是如何在游戏循环场景中处理键码的示例,并且如果您不将其用作游戏的一部分,它也可能具有可塑性。我还假设您使用 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多