如何中断SpriteKit操作序列并恢复,就好像没有中断一样

时间:2017-03-04 22:20:14

标签: sprite-kit swift3 skaction

我想打断下面的序列2秒钟,然后恢复到最初没有中断的情况。

例如,从下面的代码中,如果我通过使精灵从序列的1.5 - 3.5秒可见而中断序列2秒(意味着hideInterval动作加1 {{1}动作,并且showSprite动作将丢失0.5秒)中断将在showInterval动作的剩余2.5秒结束。如何让精灵在剩余的2.5秒内运行一个动作,然后继续正常的顺序。

请注意,此示例是为了清晰起见,但我希望在中断后更通用的方法来恢复序列。

showInterval

更新

我认为下面的图表将使我的问题更容易理解,并进一步解释我希望通过序列中断实现的目标。

enter image description here

1 个答案:

答案 0 :(得分:1)

要像你的那样中断动作序列,你可以简单地用你的精灵暂停你的精灵:

sprite.isPaused = true

并恢复您可以执行的操作:

sprite.isPaused = false

要在一段时间之后做一些具体的动作,你可以简单地做出:

sprite.run(SKAction.wait(forDuration: 2.5),completion:{
   print("after 2.5 sec do..")
})

要回答关于“停止动作序列的通用方法”,你不能暂停一系列动作,例如通过将speed设置为0,一个序列没有响应,因为暂时响应正常动作,因为它是一个按顺序运行动作集合的动作。关于我的话的一个例子或解释可能是当你有一个动作来报告调用其他场景/调用其他方法的子动作/代码时,所以不可能用普通的已知方法来停止序列。