点击

时间:2015-09-28 15:57:59

标签: javascript events canvas

我目前正在使用socket.io进行节点游戏并绘制到画布上。我注意到,当我在游戏中点击时,角色移动会慢慢爬行。理想情况下,我希望保持游戏开始时的抽奖率,并确定导致这些内存问题的原因。我正在寻找如何以确定的方式调试它

对于上下文:我正在更新游戏循环中的x,y坐标,根据哪些键处于活动状态(由keyup和keydown事件决定)。我通过套接字将播放器信息发送到服务器大约每秒60次。

为了更具体,这里是页面内存时间线的记录:

enter image description here

陡峭的增加恰好发生在点击事件发生的时间。一旦游戏开始,就会发生原始跳跃(在添加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)
  }
}

谢谢!

注意:我最初是从头开始尝试学习一堆但可能会转向游戏制作框架。

0 个答案:

没有答案