1.4 KiB
1.4 KiB
InputManager::ProcessKeyDown
向输入系统注入一个按键按下事件。
void ProcessKeyDown(KeyCode key, bool repeat, bool alt, bool ctrl, bool shift, bool meta);
行为说明
当前实现会:
- 如果未初始化或键索引越界,直接返回
- 把
m_keyDown[index]设为true - 把
m_keyDownThisFrame[index]设为true - 构造
KeyEvent - 如果
repeat为true,事件类型设为Repeat,否则为Down - 同步触发
m_onKeyEvent
这里有一个很重要的当前实现细节:repeat 只会影响事件类型,不会阻止本帧按下缓存被写入。也就是说,只要平台层再次调用 ProcessKeyDown():
- IsKeyPressed 可能在该帧再次返回
true - GetButtonDown 可能再次返回
true - IsAnyKeyPressed 也可能再次成立
如果你需要“严格只响应首次物理按下”,需要结合 repeat 自己做过滤,或者在更上层维护去抖逻辑。
参数
key- 键值。repeat- 是否为重复按键事件。alt- Alt 修饰键状态。ctrl- Ctrl 修饰键状态。shift- Shift 修饰键状态。meta- Meta 修饰键状态。
返回值
- 无。