sprite-kit
SKAcción
Buscar..
Crea y ejecuta una simple acción
Un ejemplo muy simple sería desvanecer un SKSpriteNode.
En Swift:
let node = SKSpriteNode(imageNamed: "image")
let action = SKAction.fadeOutWithDuration(1.0)
node.runAction(action)
Creando una secuencia repetitiva de acciones
A veces es necesario realizar una acción en repetición o en una secuencia. Este ejemplo hará que el nodo aparezca y desaparezca un total de 3 veces.
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)
Ejecutar un bloque de código en un SKAction
Un caso útil es hacer que la acción ejecute un bloque de código.
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)
Acciones nombradas que pueden ser iniciadas o eliminadas desde otro lugar.
A veces, desearía iniciar o eliminar una acción en un nodo específico en un momento determinado. Por ejemplo, es posible que desee detener un objeto en movimiento cuando el usuario toca la pantalla. Esto resulta muy útil cuando un nodo tiene múltiples acciones y solo desea acceder a una de ellas.
let move = SKAction.moveTo(x: 200, duration: 2)
object.run(move, withKey: "moveX")
Aquí configuramos la tecla "moveX" para el move
acción para poder acceder más tarde en otra parte de la clase.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
object.removeAction(forKey: "moveX")
}
Cuando el usuario toque la pantalla, la acción se eliminará y el objeto dejará de moverse.