我正在为 OSX 使用 Spritekit 编写游戏。如何检查当前是否按下了一个键?考虑这个例子:
//some code. this could be e.g. inside a game loop
if (/*is key 'w' pressed*/) {
// move forward
}
//some more code
Swift 和 Objective-C 解决方案都很有用。
注意:我对接收或处理事件不感兴趣,所以我想尽可能避免这种情况。我只需要检查当前是否按下了特定的键。
注意#2:这个问题不是链接问题的重复,因为它只从接收“keyPressed”事件(作为方法调用的参数)的角度解决问题,而不是从在别处执行检查以查明当前是否正在按下某个键的角度来看。换句话说,它没有帮助我填写上面 if 语句中的条件。
我想我可能不得不最终维护一个 bool 值数组,每个键码一个,并在收到 keyDown 和 keyUp 事件时更新其内容。但我希望有一个更优雅的解决方案,因为这似乎是微不足道的功能。
最佳答案
如果轮询而不是接收通知更方便,您可以使用 Quartz 事件服务功能 CGEventSourceKeyState
.
关于objective-c - 如何检测是否在 OS X 上按下了某个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391748/