swift - 等待持续时间减少参数

标签 swift sprite-kit nstimer nstimeinterval

我想减少 SKAction.waitForDuration(X) 的参数。

我正在使用 Flappy Bird 教程(https://www.youtube.com/watch?v=RjUvEiNxWfc - 请参阅第 7 分钟),我想做类似的事情

var timeToWait:Int = 8

let spawn = SKAction.runBlock({
                () in

                self.createWalls()
                timeToWait--
            })

            let delay = SKAction.waitForDuration(timeToWait)
            let SpawnDelay = SKAction.sequence([spawn, delay])
            let spawnDelayForever =   SKAction.repeatActionForever(SpawnDelay)
         self.runAction(spawnDelayForever)

但是,waitForDuration 的参数是 NSTimer,而不是 float 。我可以做什么来更改该参数?

谢谢!

最佳答案

waitForDuration 需要一个 NSTimeInterval 类型的值。

当您将 timeToWait 传递给函数时,您可以键入强制转换 timeToWait:

let delay = SKAction.waitForDuration(NSTimeInterval(timeToWait))

顺便说一句,您的代码似乎想要减少每次生成之间的延迟,但它不会这样做,因为 timeDelay 是在您创建延迟操作时捕获的,并且如果您之后修改变量,则不会更改该操作的持续时间。

[编辑]

下面是一个以周期为单位加快产卵间隔(从 8 到 1)的示例:

  let spawn = SKAction.runBlock({ self.createWalls() })

  var spawnCycle:[SKAction] = []
  for timeToWait in (1...8).reverse()
  {
     spawnCycle.append(spawn)
     spawnCycle.append(SKAction.waitForDuration(NSTimeInterval(timeToWait)))
  }    

  self.runAction(SKAction.repeatActionForever(SKAction.sequence(spawnCycle)))

关于swift - 等待持续时间减少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444275/

相关文章:

swift - 为什么 Swift Playgrounds 不显示 View 的转换?

html - 无法通过 NSAttributedString 使 <img> 适合 UITextView/HTML 中的屏幕宽度

ios - 在 SpriteKit 中将动态物理对象保持在手指下

swift - 如何使用 Swift 和 SpriteKit 创建类似吉他的弦乐

objective-c - 60 赫兹 NSTimer 和自动释放内存

swift - 初学者 Swift 3 数据验证

swift - 场景套件 : How to make SCNNode only rotate horizontally in Swift 2. 0

ios - 逐渐提高 SpriteKit 中滚动背景的速度

ios - 使 NSTimer 失效并创建

ios - iOS 中的倒数计时器在后台不工作