我目前正在使用socket.io进行节点游戏并绘制到画布上。我注意到,当我在游戏中点击时,角色移动会慢慢爬行。理想情况下,我希望保持游戏开始时的抽奖率,并确定导致这些内存问题的原因。我正在寻找如何以确定的方式调试它
对于上下文:我正在更新游戏循环中的x,y坐标,根据哪些键处于活动状态(由keyup和keydown事件决定)。我通过套接字将播放器信息发送到服务器大约每秒60次。
为了更具体,这里是页面内存时间线的记录:
陡峭的增加恰好发生在点击事件发生的时间。一旦游戏开始,就会发生原始跳跃(在添加6个额外的听众之前)。正如你所看到的那样,点击它会有点疯狂。
我没有绑定到click事件的处理程序,但JS Heap迅速增长,似乎添加了听众,这让我感到困惑。这是link to my repo,下面是来自game.js
的一个与按键有关的块,可能会以某种方式参与其中:
var sendKey = function (activeK) {
player.xSpeed = 0;
player.ySpeed = 0;
if (activeK[KEY_W]) {
player.ySpeed = -SPEED;
}
if (activeK[KEY_A]) {
player.xSpeed = -SPEED;
}
if (activeK[KEY_S]) {
player.ySpeed = SPEED;
}
if (activeK[KEY_D]) {
player.xSpeed = SPEED;
}
if (activeK[SPACE]) {
activate(player)
}
}
document.onkeydown = function(e) {
if (activeKeys.hasOwnProperty(e.keyCode)) {
activeKeys[e.keyCode] = true;
sendKey(activeKeys)
}
}
document.onkeyup = function(e) {
if (activeKeys.hasOwnProperty(e.keyCode)) {
activeKeys[e.keyCode] = false;
sendKey(activeKeys)
}
}
谢谢!
注意:我最初是从头开始尝试学习一堆但可能会转向游戏制作框架。