You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

游戏结束后禁用鼠标交互失效求助:计时器判断方案无效

解决游戏结束后鼠标交互未禁用的问题

你当前的代码只在游戏启动时(startTime>0)绑定鼠标交互,但没有在游戏结束(startTime归零)时移除已绑定的事件监听,之前绑定的交互逻辑会一直生效,所以计时器归零后仍能操作。

解决方案

  1. 拆分鼠标交互逻辑,分别写绑定和解绑函数:
// 绑定鼠标交互
function setupMouseInteraction() {
  // 示例:绑定你的鼠标事件
  canvas.addEventListener('click', onMouseClick);
  canvas.addEventListener('mousemove', onMouseMove);
}

// 解绑鼠标交互
function removeMouseInteraction() {
  // 对应移除事件监听,必须和绑定的函数完全一致
  canvas.removeEventListener('click', onMouseClick);
  canvas.removeEventListener('mousemove', onMouseMove);
}
  1. 增加状态判断,在游戏状态切换时调用对应函数:
let isMouseActive = false; // 标记当前鼠标交互是否激活

function checkGameState() {
  if (startTime > 0 && !isMouseActive) {
    setupMouseInteraction();
    isMouseActive = true;
  } else if (startTime <= 0 && isMouseActive) {
    removeMouseInteraction();
    isMouseActive = false;
  }
}

原理说明

事件监听一旦绑定,除非主动调用removeEventListener移除,否则会一直存在于元素上。你之前的代码只做了“添加交互”的动作,没处理“移除交互”的步骤,所以游戏结束后鼠标操作不会自动失效。通过显式解绑事件,就能彻底禁用鼠标交互,直到下次重启游戏时重新绑定。

内容的提问来源于stack exchange,提问作者Tan Jun Rong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:50:46