等待持续时间减少参数

时间:2016-02-16 22:29:44

标签: swift sprite-kit nstimer nstimeinterval

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

我正在使用Flappy Bird Tutorial(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。如何更改该参数?

谢谢!

1 个答案:

答案 0 :(得分:1)

waitForDuration需要NSTimeInterval类型的值。

将函数传递给函数时,可以输入cast timeToWait:

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

顺便说一下,你的代码似乎想要减少每个spawn之间的延迟,但它不会这样做,因为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)))