Sök…


Skapa och kör en enkel SKAction

Ett mycket enkelt exempel skulle vara att tona ut en SKSpriteNode.

I Swift:

let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)

Skapa en upprepande åtgärdssekvens

Ibland är det nödvändigt att göra en åtgärd vid repetition eller i en sekvens. Det här exemplet gör att noden bleknar in och ut totalt 3 gånger.

I Swift:

let node = SKSpriteNode(imageNamed: "image")
let actionFadeOut = SKAction.fadeOutWithDuration(1.0)
let actionFadeIn = SKAction.fadeInWithDuration(1.0)
let actionSequence = SKAction.sequence([actionFadeOut, actionFadeIn])
let actionRepeat = SKAction.repeatAction(actionSequence, count: 3)
node.runAction(actionRepeat)

Att köra ett block med kod i en SKAction

Ett användbart fall är att låta åtgärden köra ett block med kod.

I Swift:

let node = SKSpriteNode(imageNamed: "image")
let actionBlock = SKAction.runBlock({
    //Do what you want here
    if let gameScene = node.scene as? GameScene {
        gameScene.score += 5
    }
})
node.runAction(actionBlock)

Namngivna åtgärder som kan startas eller tas bort från någon annanstans.

Ibland vill du starta eller ta bort en åtgärd på en viss nod vid en viss tidpunkt. Till exempel kanske du vill stoppa ett rörligt objekt när användaren knackar på skärmen. Detta blir mycket användbart när en nod har flera åtgärder och du bara vill komma åt en av dem.

let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")

Här sätter vi nyckeln "Movex" för åtgärden move för att komma åt den senare i en annan del av klassen.

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        object.removeAction(forKey: "moveX")
    }

När användaren berör skärmen kommer åtgärden att tas bort och objektet slutar röra sig.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow