I would like to interrupt the sequence below for 2 seconds and resume to where it would have been if it wasn't interrupted in the first place.
For example, from the code below, if I were interrupt the sequence for 2 seconds by making the sprite visible from 1.5 - 3.5 seconds into the sequence (meaning that 1 second the hideInterval
action plus the showSprite
action, and 0.5 seconds of the showInterval
action would be missed) the interruption would end at 2.5 seconds remaining for the showInterval
action. How can I get the sprite to run an action on the remaining 2.5 seconds and continue with the normal sequence at that point.
Please note that this example is for clarity, though I would prefer a more generic way to resume a sequence after interruption.
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))
UPDATE
I think the following diagram will make my question more understandable and explain further what I want to achieve with the interruption of the sequence.
To interrupt the action sequence like yours, you can simply put in pause your sprite with:
and to resume the action you can do:
To make some specific action after a time you can simply made:
To answer about your "generic method to stop an action sequence" you can't pause a sequence of actions for example by settings it's
speed
to 0, a sequence don't not responding as temporally respond a normal action because it's an action that runs a collection of actions sequentially. An example or explaination about my words could be when you can have an action that report sub-actions / code that calls other scenes / calls to other methods so it's impossible to stop the sequence with the ordinary knowed methods.