gagad·GG 2021-09-19 19:52 采纳率: 20%
浏览 24

JavaScript 使用clearInterval后仍然会触发setInterval里的一些代码


let F=true;
  let gamelisten = this.setInterval(() => {
    document.onkeydown = (e) => {
      //检测移动
      if (F) {
          F=false;
        setTimeout(() =>{console.log(321); ;F=true;},200);  
        let KeyNum = e.which || e.keyCode;
        if (KeyNum == 87) {
          if (BoxArr[player.X][player.Y - 1].isAcompany == 1) {
            console.log(123);
            clearInterval(gamelisten);
          }
          if (BoxArr[player.X][player.Y - 1]._collision == 0) {
            player.Y -= 1;
          }
        }
//后面结构一样就不全复制上来了
      }
    };
    player.m_position();
  }, 160);
};

写的一个检测碰撞的,打印321后控制的单位确实动不了了,但是键盘继续输出后依然会打印123,如果往碰撞的方向移动也会打印321;
也就是说我把定时器关了之后this.document.onkeydown似乎还在发挥作用,但是如果还在发挥作用为什么控制的单位又移动不了了

  • 写回答

1条回答 默认 最新

  • 急速光粒 2021-09-19 19:57
    关注

    this.document.onkeydown只要安装就会成效的,不用重复定时设置。除非你重新设置为null。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月19日

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝