sprite-kit
SKAction
Szukaj…
Utwórz i uruchom prostą SKAction
Bardzo prostym przykładem może być zanikanie węzła SKSpriteNode.
W Swift:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
Tworzenie powtarzającej się sekwencji akcji
Czasami konieczne jest wykonanie akcji na powtórce lub w sekwencji. Ten przykład spowoduje, że węzeł zaniknie i zniknie w sumie 3 razy.
W 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)
Uruchamianie bloku kodu w SKAction
Jednym pomocnym przypadkiem jest uruchomienie akcji kodu.
W 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)
Nazwane działania, które można uruchomić lub usunąć z innego miejsca.
Czasami chcesz uruchomić lub usunąć akcję na określonym węźle w określonym czasie. Na przykład możesz zatrzymać ruchomy obiekt, gdy użytkownik dotknie ekranu. Staje się to bardzo pomocne, gdy węzeł ma wiele akcji i chcesz uzyskać dostęp tylko do jednego z nich.
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
Tutaj możemy ustawić klawisz „Movex” dla działań move
w celu niego dostęp później w innej części klasy.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
Gdy użytkownik dotknie ekranu, akcja zostanie usunięta, a obiekt przestanie się poruszać.