sprite-kit
SKAction
Recherche…
Créer et exécuter un SKAction simple
Un exemple très simple serait de supprimer un SKSpriteNode.
En Swift:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
Création d'une séquence d'actions répétée
Parfois, il est nécessaire de faire une action sur une répétition ou une séquence. Cet exemple rendra le nœud en fondu et sortira au total 3 fois.
En 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)
Exécution d'un bloc de code dans un SKAction
Un cas utile est que l'action exécute un bloc de code.
En 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)
Actions nommées pouvant être lancées ou supprimées ailleurs.
Parfois, vous souhaitez démarrer ou supprimer une action sur un nœud spécifique à un moment donné. Par exemple, vous pouvez vouloir arrêter un objet en mouvement lorsque l'utilisateur appuie sur l'écran. Cela devient très utile lorsqu'un nœud a plusieurs actions et que vous souhaitez uniquement accéder à l'un d'entre eux.
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
Ici, nous définissons la clé "moveX" pour le move
action afin d'y accéder ultérieurement dans une autre partie de la classe.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
Lorsque l'utilisateur touche l'écran, l'action sera supprimée et l'objet cessera de bouger.