【发布时间】:2017-03-18 21:00:11
【问题描述】:
我正在尝试用键盘让飞船在屏幕上移动。我设法处理关键事件,但我注意到,当同时按下多个键时,它的行为将不正确,只有一个具有优先级。我正在使用switch 语句,因为我认为keyDown 函数为每个键调用一次,但即使我在这些情况下明确添加fallthrough,它也不是更好。有没有人经历过这样的事情,有没有更好的方法来使用键盘作为控制器?
override func keyDown(with event: NSEvent) {
switch event.keyCode {
case 0x31:
if let playerShip = self.playerShip {
playerShip.run(SKAction.init(named: "Pulse")!, withKey: "fadeInOut")
}
case 123:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyAngularImpulse(0.001, duration: 0.1))
}
case 124:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyAngularImpulse(-0.001, duration: 0.1))
}
case 125:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyImpulse(CGVector.init(angle: playerShip.zRotation).opposite(), duration: 0.1))
}
case 126:
if let playerShip = self.playerShip {
playerShip.run(SKAction.applyImpulse(CGVector.init(angle: playerShip.zRotation), duration: 0.1))
}
default:
print("keyDown: \(event.characters!) keyCode: \(event.keyCode)")
}
}
【问题讨论】:
标签: swift macos sprite-kit keyboard-events gamecontroller