变量即使在本应重置为0之后仍保持增加



我正在使用socket.io和node.js制作一个多人html5游戏,有一个变量我想保持在某个数字以下,但即使我重置了它,它也会不断增加。我有两个主要文件,app.js:我的服务器和Index.html:客户端

这是我的代码:

reset_sx = function() {
if (sx > 96) {
console.log(sx);
sx = 0;
}
}
socket.on("newPositions", function(data) {
ctx.clearRect(0, 0, 500, 500);
for (var i = 0; i < data.length; i++)
ctx.drawImage(img.player, sx, sy, 32, 48, data[i].x, data[i].y, 32, 48);
reset_sx();
});

document.onkeydown = function(event) {
if (event.keyCode === 68) {
socket.emit("keyPress", { inputId: "right", state: true });
sx += 32;
sy = 96;
}
//d
else if (event.keyCode === 83) {
socket.emit("keyPress", { inputId: "down", state: true });
sx += 32;
sy = 0;
}
//s
else if (event.keyCode === 65) {
socket.emit("keyPress", { inputId: "left", state: true });
sx += 32;
sy = 48;
}
//a
else if (event.keyCode === 87) {
socket.emit("keyPress", { inputId: "up", state: true });
sx += 32;
sy = 144;
}
// w
};
document.onkeyup = function(event) {
if (event.keyCode === 68) {
socket.emit("keyPress", { inputId: "right", state: false });
sx = 0;
}
//d
else if (event.keyCode === 83) {
socket.emit("keyPress", { inputId: "down", state: false });
sx = 0;
}
//s
else if (event.keyCode === 65) {
socket.emit("keyPress", { inputId: "left", state: false });
sx = 0;
}
//a
else if (event.keyCode === 87) {
socket.emit("keyPress", { inputId: "up", state: false });
sx = 0;
}
// w
};
</script>

"newPositions"在一个单独的app.js文件中发出:

var pack = [];
for (var i in PLAYER_LIST) {
var player = PLAYER_LIST[i];
player.updatePosition();
pack.push({
x: player.x,
y: player.y,
number: player.number
});
}
for (var i in SOCKET_LIST) {
var socket = SOCKET_LIST[i];
socket.emit("newPositions", pack);
}
}, 1000 / 25);

预期结果:sx超过96后,它将重置为0。

实际结果:当sx超过96后,它变为128,然后变为160
(sx增加32(,然后重置为0

如果我需要添加更多,请告诉我。

我是一个noob程序员,所以如果我做了什么愚蠢的事情,请帮助

如果没有服务器端代码,很难确定,但"newPositions"可能不会立即发出。您可以将reset_sx放在onkeydown函数中(在if块之后(。

edit:在app.js文件中——这似乎只是函数的一部分,我们需要能够看到它的其余部分

最新更新