Files
XCEngine/docs/api/XCEngine/Input/InputManager/IsKeyUp.md

47 lines
1.1 KiB
Markdown
Raw Normal View History

2026-03-26 16:45:24 +08:00
# InputManager::IsKeyUp
2026-03-26 17:39:53 +08:00
查询一个键当前是否处于抬起状态。
2026-03-26 16:45:24 +08:00
```cpp
bool IsKeyUp(KeyCode key) const;
```
2026-03-26 17:39:53 +08:00
## 行为说明
2026-03-26 16:45:24 +08:00
2026-04-08 16:07:03 +08:00
当前实现直接把它定义成“不是 Down”
2026-03-26 16:45:24 +08:00
2026-03-26 17:39:53 +08:00
- 如果管理器未初始化,返回 `true`
- 否则返回 `!IsKeyDown(key)`
2026-04-08 16:07:03 +08:00
- 如果 `KeyCode` 超出内部数组范围,`IsKeyDown()` 会返回 `false`,因此这里也会表现为 `true`
2026-03-26 16:45:24 +08:00
2026-04-08 16:07:03 +08:00
因此对于未初始化、越界或当前未按住的键,它都会被视为 “Up”。
这和 [IsKeyReleased](IsKeyReleased.md) 要区分开:
- `IsKeyUp()` 回答的是“现在有没有按住”
- `IsKeyReleased()` 回答的是“这一帧是否刚释放”
如果你要做“松开键就触发一次”这类逻辑,应优先使用释放边沿接口,而不是用 `IsKeyUp()` 轮询。
2026-03-26 16:45:24 +08:00
2026-03-26 17:39:53 +08:00
## 参数
2026-03-26 16:45:24 +08:00
2026-03-26 17:39:53 +08:00
- `key` - 要查询的键。
## 返回值
- `bool` - 当前是否抬起。
2026-03-26 16:45:24 +08:00
2026-04-08 16:07:03 +08:00
## 示例
```cpp
if (XCEngine::Input::InputManager::Get().IsKeyUp(XCEngine::Input::KeyCode::Space)) {
// Space 当前没有被按住
}
```
2026-03-26 16:45:24 +08:00
## 相关文档
2026-03-26 17:39:53 +08:00
- [返回类型总览](InputManager.md)
- [IsKeyDown](IsKeyDown.md)
2026-04-08 16:07:03 +08:00
- [IsKeyReleased](IsKeyReleased.md)