每 X 秒使用 SKAction 调用一个函数 Swift
Call a function with SKAction ever X seconds Swift
我有两个函数可以将敌人生成到 GamePlay 场景中。我尝试使用 NSTimers 每 .3 秒调用一次它们,但是当应用程序失去焦点时,计时器会继续运行并产生数百个敌人。
我读到 SKActions 会自动暂停,所以我尝试实施一个,但我收到一条错误消息:
无法使用“(SKAction!)”类型的参数列表调用 'repeatActionForever'
无法使用类型为“((), queue: (Double))”的参数列表调用 'runBlock'
代码:
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 时间吗?
有 SKAction
方法只做时间延迟。例如,您可以创建一个 SKAction.sequence
包含您希望执行的操作,以及 0.3 秒的延迟:
let action = SKAction.sequence([SKAction.runBlock(spawnEnemies), SKAction.waitForDuration(0.3)])
然后,就像您之前尝试的那样,您可以使操作 运行 永远:
runAction(SKAction.repeatActionForever(action))
结果是 spawnEnemies
每 0.3 秒 运行 无休止地发生。
我有两个函数可以将敌人生成到 GamePlay 场景中。我尝试使用 NSTimers 每 .3 秒调用一次它们,但是当应用程序失去焦点时,计时器会继续运行并产生数百个敌人。
我读到 SKActions 会自动暂停,所以我尝试实施一个,但我收到一条错误消息:
无法使用“(SKAction!)”类型的参数列表调用 'repeatActionForever'
无法使用类型为“((), queue: (Double))”的参数列表调用 'runBlock'
代码:
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 时间吗?
有 SKAction
方法只做时间延迟。例如,您可以创建一个 SKAction.sequence
包含您希望执行的操作,以及 0.3 秒的延迟:
let action = SKAction.sequence([SKAction.runBlock(spawnEnemies), SKAction.waitForDuration(0.3)])
然后,就像您之前尝试的那样,您可以使操作 运行 永远:
runAction(SKAction.repeatActionForever(action))
结果是 spawnEnemies
每 0.3 秒 运行 无休止地发生。