仅运行一次keyDown函数

时间:2016-06-25 19:15:31

标签: swift macos function swift2

我正在创建一个OS X Swift SpriteKit游戏,但对于编程来说还是一个新手。我正在尝试仅在按下键时运行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)))

}

1 个答案:

答案 0 :(得分:1)

NSEventisARepeat property。只需确保您的代码仅在此属性为false时运行。例如。将此行放在函数的开头:

guard !theEvent.isARepeat else { return }