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 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd