SpriteKit OS X获取按下了哪个键

时间:2014-11-26 18:07:18

标签: macos sprite-kit

在OS X精灵工具包项目中,我可以实现keyDown(_:)keyUp(_:)方法来监听关键事件。如何找到按下的键(向上箭头,A,2,空格等)。我可以使用characters属性作为字母键,但如何检查箭头键或空格键。我可以使用keyCode属性,这将与键盘/ mac类型不同/可能会改变。

1 个答案:

答案 0 :(得分:0)

这取决于游戏。如果你正在开发一个角色具有意义的游戏(例如,a =攻击的游戏,p =暂停,g =投掷手榴弹),那么处理theEvent.characters是有道理的。如果您使用键代码并且用户使用不同的键盘布局(例如,Dvorak,Colmak),则用户将被迫在心理上将键重新映射到QWERTY键盘布局。

以下是如何将theEvent.characters中的字符转换为UTF-16表示的示例。检测特殊字符(例如向上/向下箭头)是否被按下非常有用。

override func keyDown(theEvent:NSEvent) {
    for codeUnit in theEvent.characters!.utf16 {
        println ("Keypressed: \(codeUnit)")
    }
}

对于其中键位置很重要的其他类型的游戏(例如W = up,A = left,D = right,S = down),使用与硬件无关的键码属性更有意义。