【3.8X】关于按键的问题

image

我现在在一个全局脚本中,通过上述的方式注册了,按键的按下与抬起

但是目前出现了一个问题,我尝试了几种方案来进行修复,但是都没修复
所以想请教一下各位大佬,我该如何修复或排查呢?

重现流程

当我按下W时(触发W按下事件),此时按住W并按下D(触发D按下事件)

(这里没问题)
如果此时,我按住W不放,松D(触发D抬起事件)
image

(主要是这里为什么会自动触发)
如果此时,我按住D不放,松W(触发W抬起事件),但是这个时候,系统会自动触发D的按下事件
image

陈年老bug了,自己做个状态记录吧

const pressMap = {};
input.on(Input.EventType.KEY_DOWN, (event: EventKeyboard) => {
      if (pressMap[event.keyCode]) {
        return;
      }
      pressMap[event.keyCode] = true;
}
input.on(Input.EventType.KEY_UP, (event: EventKeyboard) => {
      delete pressMap[event.keyCode];
}

哦 原来是BUG哦 我还以为是自己的问题哦 那就行 谢谢了

当你按下一个按键后,html会先触发一次,之后会间隔一段时间反复触发keydown事件,直到按键抬起。

所以从另外一个角度分析,此时D仍旧是按下状态,根据上边的规则,就是应该触发按下D,没毛病!

我写了个例子,你可以看下原生的效果

https://codepen.io/tidys/pen/OPVedEY