sprite-kit
SKAction
Ricerca…
Crea ed esegui un semplice SKAction
Un esempio molto semplice potrebbe essere la dissolvenza di un SKSpriteNode.
In Swift:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
Creazione di una sequenza ripetuta di azioni
A volte è necessario eseguire un'azione su ripetizione o sequenza. Questo esempio farà sbiadire il nodo in entrata e in uscita per un totale di 3 volte.
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)
Esecuzione di un blocco di codice in una SKAction
Un caso utile è che l'azione esegua un blocco di codice.
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)
Azioni nominate che possono essere avviate o rimosse da altrove.
A volte si vorrebbe avviare o rimuovere un'azione su un nodo specifico in un determinato momento. Ad esempio, potresti voler fermare un oggetto in movimento quando l'utente tocca lo schermo. Ciò diventa molto utile quando un nodo ha più azioni e si desidera solo accedere a una di esse.
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
Qui impostiamo la chiave "moveX" per lo move
dell'azione per accedervi successivamente in un'altra parte della classe.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
Quando l'utente tocca lo schermo, l'azione verrà rimossa e l'oggetto smetterà di muoversi.