Dar*_*tar 1 ios skaction swift
我有两个函数可以在 GamePlay 场景中生成敌人。我尝试使用 NSTimers 每 0.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)))))
}
Run Code Online (Sandbox Code Playgroud)
我想运行的两个函数是 spawnEnemies 和 spawnSuperBlocks。任何帮助将不胜感激!
编辑:当场景移动到视图时,它会立即生成超级块。这是我为超级块获得的代码
let spawnSuperBlock = SKAction.sequence([SKAction.runBlock(spawnSuperBlocks), SKAction.waitForDuration(superblockRandomizer)])
runAction(SKAction.repeatActionForever(spawnSuperBlock))
Run Code Online (Sandbox Code Playgroud)
它不应该在产卵前至少等待 superblockRandomizer 时间吗?
有些SKAction
方法除了延迟时间什么都不做。例如,您可以创建一个SKAction.sequence
包含您希望执行的操作,以及 0.3 秒的延迟:
let action = SKAction.sequence([SKAction.runBlock(spawnEnemies), SKAction.waitForDuration(0.3)])
Run Code Online (Sandbox Code Playgroud)
然后,就像您之前尝试过的那样,您可以使操作永远运行:
runAction(SKAction.repeatActionForever(action))
Run Code Online (Sandbox Code Playgroud)
结果是无休止地发生spawnEnemies
,每 0.3 秒运行一次。