SpriteKit OS X 获取按下的键



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

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

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

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

对于键的位置很重要的其他类型的游戏(例如 W = 向上、A = 左、D = 右、S = 向下),使用独立于硬件的键代码属性更有意义。

最新更新