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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow