SKAction Completion Handlers; usage in Swift

spacecash21 picture spacecash21 · Apr 14, 2015 · Viewed 8.6k times · Source

I'm new to Swift and SpriteKit. A lot of the samples of SpriteKit Actions are in Objective C, which I can't map to, nor get working, in Swift.

If running an SKAction, and upon SKAction completion wanting to do something else, how do I get this right, in Swift?

    spaceMan.runAction(spaceManDeathAnimation, completion: {
        println("red box has faded out")
    })

Any ideas will be greatly appreciated.

Edit:

for i in 0...29 {
    textures.append(SKTexture(imageNamed: "spaceManDeath_\(i)"))
}
spaceManDeathAnimation = SKAction.repeatActionForever(SKAction.animateWithTextures(textures, timePerFrame: 0.15625))

Answer

spacecash21 picture spacecash21 · Apr 14, 2015

Found an issue here:

spaceManDeathAnimation = SKAction.repeatAction(SKAction.animateWithTextures(textures, timePerFrame: 0.15625), count: 1)

Also,as sangony posted a very nice link - solved the completion block syntax to

    spaceMan.runAction(spaceManDeathAnimation, completion: {() -> Void in
        println("death")
    })

Very big thanks to everybody for contributions for a solution!