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

Its*_*ain 6 sprite-kit skaction swift3

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

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

请注意,这个例子是为了清楚起见,但我希望在中断后更通用的方法来恢复序列.

    let hideSprite = SKAction.fadeAlpha(to: 0, duration: 0.5)
    let showSprite = SKAction.fadeAlpha(to: 100, duration: 0.5)
    let hideInterval = SKAction.wait(forDuration: 2)
    let showInterval = SKAction.wait(forDuration: 3)
    let spriteSequence = SKAction.sequence([hideSprite, hideInterval, showSprite, showInterval])
    sprite.runAction(SKAction.repeatForever(spriteSequence))
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

在此输入图像描述

Ale*_*ano 1

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

sprite.isPaused = true
Run Code Online (Sandbox Code Playgroud)

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

sprite.isPaused = false
Run Code Online (Sandbox Code Playgroud)

要在一段时间后执行某些特定操作,您可以简单地执行:

sprite.run(SKAction.wait(forDuration: 2.5),completion:{
   print("after 2.5 sec do..")
})
Run Code Online (Sandbox Code Playgroud)

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