Swift 只运行一次按键功能

Swift 只运行一次按键功能,swift,macos,function,swift2,Swift,Macos,Function,Swift2,我正在创建一个OSXswiftSpriteKit游戏,但对编程还是很陌生。我试图在按下某个键时只运行一次keyDown功能。目前,如果按下一个键,它会快速重复代码。我正在尝试使它,以便我可以播放一次我的游戏角色的运行动画(因此它将永远重复,直到不再按下该键),因为在keyUp功能上,它将返回到播放空闲动画。它没有播放正在运行的动画,而是在第一个纹理上冻结,因为代码重复得太快,没有留出时间播放完整的动画。是否可能只触发一次操作 override func keyDown(theEvent: NSE

我正在创建一个OSXswiftSpriteKit游戏,但对编程还是很陌生。我试图在按下某个键时只运行一次keyDown功能。目前,如果按下一个键,它会快速重复代码。我正在尝试使它,以便我可以播放一次我的游戏角色的运行动画(因此它将永远重复,直到不再按下该键),因为在keyUp功能上,它将返回到播放空闲动画。它没有播放正在运行的动画,而是在第一个纹理上冻结,因为代码重复得太快,没有留出时间播放完整的动画。是否可能只触发一次操作

override func keyDown(theEvent: NSEvent) {

if theEvent.keyCode == 124 {
        //Move right
        runningRight = true
        runRightOrLeft(player)
        player.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(RunTextures, timePerFrame: 0.1)))

        }
}

override func keyUp(theEvent: NSEvent) {
    //Go back to idle animation
  player.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(IdleTextures, timePerFrame: 0.1)))

}
这是您的
NSEvent
的名称。只需确保代码仅在该属性为false时运行。例如,将这一行放在函数的开头:

guard !theEvent.isARepeat else { return }