我正在爲swift創建一個基於2D瓦片的平臺遊戲,用於Mac OSX。當一次推送多個按鍵時,我遇到了控件的問題。例如;如果'D'使角色向右移動,'W'使他跳躍;如果我拿着'D'讓角色跑,然後點擊'W'讓他跳,他一旦着陸就會停下來。他繼續向右移動的唯一方法是再次潤飾'D',這當然是不可取的。看起來好像按下'W'鍵時,它取消了'D'keyDown事件。如果任何人有任何建議,我可以做到這一點,以便可以按下多個鍵而不取消其他類似的事件,我當然會感激。 這是我的KeyDown事件的外觀:mac swift多個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上獲得相同的行爲。 –