sprite-kit
SKAction
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.