Suche…


Erstellen Sie eine einfache SKAction und führen Sie sie aus

Ein sehr einfaches Beispiel wäre das Ausblenden eines SKSpriteNode.

In Swift:

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

Wiederholte Abfolge von Aktionen erstellen

Manchmal muss eine Aktion wiederholt oder in einer Sequenz ausgeführt werden. In diesem Beispiel wird der Knoten insgesamt dreimal ein- und ausgeblendet.

In 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)

Ausführen eines Codeblocks in einer SKAction

Ein hilfreicher Fall ist, dass die Aktion einen Codeblock ausführt.

In 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)

Benannte Aktionen, die an anderer Stelle gestartet oder entfernt werden können.

Manchmal möchten Sie zu einem bestimmten Zeitpunkt eine Aktion auf einem bestimmten Knoten starten oder entfernen. Sie möchten beispielsweise ein sich bewegendes Objekt anhalten, wenn der Benutzer auf den Bildschirm tippt. Dies ist sehr hilfreich, wenn ein Knoten mehrere Aktionen hat und Sie nur auf eine davon zugreifen möchten.

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

Hier setzen wir die Taste "moveX" für den Aktionszug move um später in einem anderen Teil der Klasse darauf zuzugreifen.

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

Wenn der Benutzer den Bildschirm berührt, wird die Aktion entfernt und das Objekt bleibt stehen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow