用SKAction调用函数X秒Swift

时间:2015-07-28 19:02:48

标签: ios swift skaction

我有两个功能可以将敌人产生到GamePlay场景中。我尝试用NSTimers每隔0.3秒调用一次,但是当应用程序失去焦点时,计时器会继续运行并产生数百个敌人。

我读到SKActions自动暂停,所以我尝试实现一个,但我收到一个错误说:

无法调用' repeatActionForever'使用类型'(SKAction!)'

的参数列表

无法调用' runBlock'使用类型'((),queue:(Double))'

的参数列表

代码:

override func didMoveToView(view: SKView) {

superblockRandomizer = NSTimeInterval(arc4random_uniform(5) + 5)
runAction(SKAction.repeatActionForever(SKAction.sequence(SKAction.runBlock(spawnEnemies(), queue: (0.3)))))
runAction(SKAction.repeatActionForever(SKAction.sequence(SKAction.runBlock(spawnSuperBlocks(), queue: (superblockRandomizer)))))
}

我想运行的两个函数是spawnEnemies和spawnSuperBlocks。任何帮助将不胜感激!

编辑: 当场景移动到视图时,它会立即产生超级块。下面是我为超级块获得的代码

    let spawnSuperBlock = SKAction.sequence([SKAction.runBlock(spawnSuperBlocks), SKAction.waitForDuration(superblockRandomizer)])
    runAction(SKAction.repeatActionForever(spawnSuperBlock))

它不应该在产卵前至少等待superblockRandomizer的时间吗?

1 个答案:

答案 0 :(得分:4)

SKAction种方法除了延迟时间外什么都不做。例如,您可以创建一个包含您希望执行的操作的SKAction.sequence,并延迟0.3秒:

let action = SKAction.sequence([SKAction.runBlock(spawnEnemies), SKAction.waitForDuration(0.3)])

然后,就像你之前尝试过的那样,你可以让行动永远运行:

runAction(SKAction.repeatActionForever(action))

结果是一个无休止的spawnEnemies,每0.3秒运行一次。