我正在为 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 解决方案都很有用。
Note:我对接收或处理该事件不感兴趣,因此我想尽可能避免这种情况。我只需要检查当前是否按下了特定的键。
Note #2:这个问题不是链接问题的重复,因为它只是从接收“keyPressed”事件(作为方法调用的参数)的角度解决问题,而不是从在其他地方执行检查以找出答案的角度解决问题当前是否正在按下某个键。换句话说,它并不能帮助我填写上面if语句中的条件。
我想我可能必须最终维护一个布尔值数组,每个键码对应一个布尔值,并在收到 keyDown 和 keyUp 事件时更新其内容。但我希望有一个更优雅的解决方案,因为这似乎是相当微不足道的功能。
如果轮询比接收通知更方便,您可以使用 Quartz Event Services 功能CGEventSourceKeyState https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/#//apple_ref/c/func/CGEventSourceKeyState.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)