【发布时间】:2015-06-07 02:51:55
【问题描述】:
我正在 swift 中为 Mac OSX 创建一个基于 2D 瓷砖的平台游戏。当一次按下多个键时,我遇到了控件问题。例如;如果'D'让角色向右移动,'W'让他跳;如果我按住'D'让角色奔跑,然后点击'W'让他跳起来,他一落地就会停下来。他继续向右移动的唯一方法是再次修饰“D”,这当然是不可取的。看起来好像当按下“W”键时,它取消了“D”keyDown 事件。如果有人对我如何制作它有任何建议,以便可以在不取消其他类似事件的情况下按下多个键,我肯定会很感激。 这就是我的 KeyDown 事件的外观:
func returnChar(theEvent: NSEvent!) -> Character?{
let s: String = theEvent.characters!
for char in s {
return char}
return nil
}
override func keyDown(theEvent: NSEvent) {
let s: String = String(self.returnChar(theEvent)!)
switch(s){
case "w":
player.jump()
case "s":
// nothing yet
case "d":
player.moveLeftOrRight(CGVector(dx: 1.0, dy: 0.0))
case "a":
player.moveLeftOrRight(CGVector(dx: -1.0, dy: 0.0))
default:
println("default")
}
}
【问题讨论】:
-
这似乎是硬件的工作原理。我在带有 USB 键盘的 PC 上得到了相同的行为。
标签: macos swift controls keydown