【问题标题】:Run keyDown function only once只运行一次 keyDown 函数
【发布时间】:2016-10-28 04:15:23
【问题描述】:

我正在创建一个 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)))

}

【问题讨论】:

    标签: swift macos function swift2


    【解决方案1】:

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

    guard !theEvent.isARepeat else { return }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多