我想减少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。如何更改该参数?
谢谢!
答案 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)))