2016-02-19 6 views
6

Der folgende Code animiert eine Rotation.Anhalten einer laufenden SKAction - Sprite Kit

let something:SKSpriteNode = SKSpriteNode() 

func start(){ 
    let rotateAction = SKAction.rotateToAngle(CGFloat(M_PI), duration: 10.0) 
    something.runAction(SKAction.sequence([rotateAction])) 
} 

Jetzt möchte ich die Animation innerhalb der Animationsdauer stoppen. Gibt es etwas Ähnliches wie das Folgende? Ich möchte die Animation stoppen, wenn der Benutzer den Bildschirm berührt.

func stop(){ 
    something.SKAction.stop() 
} 

Antwort

10

Sie j ust müssen entweder:

  1. something.paused = false // or true pausieren Aktionen auf dem Knoten
  2. something.removeAllActions() definitiv Aktionen an den Knoten
  3. Name Ihre Aktion verknüpft zu entfernen, wenn something.runAction(action,withKey:"action1") Start und dann something.removeActionForKey("action1") eine bestimmte Aktion
  4. entfernen

Sie können die Geschwindigkeit bei Bedarf auch ändern.

+0

die erste Option ist wirklich einfach und ordentlich, danke –

2

Zum einen die Aktion mit einem Schlüssel laufen, so dass Sie es später identifizieren können:

something.runAction(rotateAction, withKey: "rotate action") 

Dann Sie es später durch den Aufruf stoppen

something.removeActionForKey("rotate action") 

Alternativ können Sie alle entfernen Aktionen auch

something.removeAllActions()