这是我的客户:http://pastebin.com/C9PHzTQg 这是我的服务器:http://pastebin.com/j2dfL84d
现在是“多人”直播,但如何做动作?
我发送给'b' - “UP”,“LEFT”,“RIGHT”,“DOWN”以及如何处理蚂蚁移动玩家?
抱歉我的英语不好。
答案 0 :(得分:0)
首先,你需要学习原型继承!实际上,每个Player
都有自己的draw
方法副本,因此将draw
放在Player.prototype
上:
var Player = function(context, x, y) {
this.context = context;
this.x = x;
this.y = y;
};
Player.prototype = {
draw: function() {
this.context.fillRect(this.x, this.y, 16, 16);
}
};
然后,我建议您向move
添加Player
方法:
Player.prototype = {
draw: function() {
this.context.fillRect(this.x, this.y, 16, 16);
},
move: function(direction) {
// direction is "UP", "DOWN", "LEFT" or "RIGHT"
switch(direction) {
case "UP":
this.y += 16;
break;
// ...
}
}
};
然后,在您的消息处理程序中,您只需:
socket.on('b', function(data) {
players[data.player].move(data.direction);
draw();
});
在服务器中,您可以emit('b', { player: playerId, direction: "UP" }
,例如。
更新:而不是上面draw
内的socket.on('b', ...
,您可能会遇到以下情况:
setInterval(draw, 100);
每100毫秒重绘一次。这取决于游戏的类型,我想。