我的js帆布游戏有问题。项目似乎疯狂的神游戏。 (在谷歌rotmg) 我使用php socket进行通信。当玩家改变时,我发送更新的x和y:
function keysPressed(e) {
keys[e.keyCode] = true;
if (socket_open) {
var msgg = {
type : 'char_pos',
px : pixX,
py : pixY
};
websocket.send(JSON.stringify(msgg));
}
}
服务器部分:
//check for any incomming data
while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
{
$received_text = unmask($buf); //unmask data
$msg = json_decode($received_text); //json decode
$id=array_search($changed_socket,$clients);
$pos[$id]['x']=$msg->px;
$pos[$id]['y']=$msg->py;
//prepare data to be sent to client
$response_text = mask(json_encode(array('type'=>'rys_inni', 'id'=>$id, 'pos'=>$pos)));
send_message($response_text); //send data
break 2; //exist this loop
}
接下来,当数据回来时我会这样做:
websocket.onmessage = function (ev) {
var msg = JSON.parse(ev.data);
var type = msg.type;
if (type == 'rys_inni') {
tab_innych_charow = [];
for (key in msg.pos)
if (typeof(msg.pos[key]) !== 'undefined')
tab_innych_charow.push(msg.pos[key]);
}
};
这是在间隔:
function rysuj() {
// clear canvas and bckground
for (i = 0; i < tab_innych_charow.length; i++) {
var x = tab_innych_charow[i].x; // +...;
var y = tab_innych_charow[i].y; // +...;
draw(ctx, something, x, y);
}
}
问题在于不同玩家的滞后和我的游戏看起来很差。 哪里我搞错了?问题在于php?我读到了关于socket.io但我宁愿使用php,因为我觉得它更容易。在我的模型(狂神的境界)中移动非常快速和平滑。我不知道该怎么做。你是我的最后一次机会。感谢。