user11079474
user11079474

Reputation:

How to know when an SKAction.repeat(action, count) is finished

I'm making a video games with Swift & SpriteKit. I'm trying to make the level system of my game. Each levels has his own specifications (but it's not in the code right now).

However, I would like that when my SKaction.repeat is done, to move to an other scene (such as "Level completed" scene).

Do you know how can I do it ?

Here's my code :

func parametersLevel(){
    let spawn = SKAction.run(asteroids)
    let waitSpawn = SKAction.wait(forDuration: 0.8)
    let sequence = SKAction.sequence([waitSpawn,spawn])
    let spawnCount = SKAction.repeat(sequence, count: 750)
    self.run(spawnCount)
}

Thanks for you help.

Upvotes: 0

Views: 194

Answers (2)

Knight0fDragon
Knight0fDragon

Reputation: 16827

If you need a key with your action, you can also do:

func parametersLevel(){
    let spawn = SKAction.run(asteroids)
    let waitSpawn = SKAction.wait(forDuration: 0.8)
    let sequence1 = SKAction.sequence([waitSpawn,spawn])
    let spawnCount = SKAction.repeat(sequence, count: 750)
    let endAction = SKAction.run{} //whatever you need your ending to be
    let sequence2 = SKAction.sequence([spawnCount ,endAction])
    self.run(sequence2,withKey:”spawn” )
}

Upvotes: 1

denis_lor
denis_lor

Reputation: 6547

From run(_:completion:) instead of self.run(spawnCount) try with:

self.run(spawnCount, completion: {() -> Void in
   println("completed")
})

Upvotes: 1

Related Questions