2016-01-04 3 views
6

Ich habe den folgenden Code, um eine SKSpriteNode verschieben.Pause ein SKAction in Spritekit mit Swift

let moveDown = SKAction.moveBy(CGVectorMake(0, -120), duration: 1) 
let moveUp = SKAction.moveBy(CGVectorMake(0, +120), duration: 1) 
let moveSequence = SKAction.sequence([moveDown, moveUp]) 
square.runAction(SKAction.repeatActionForever(moveSequence)) 

Dies bewegt die SKSpriteNode für immer auf und ab. Gibt es eine Möglichkeit, dass ich diese SKAction pausieren könnte? Damit der SKSpriteNode in seiner aktuellen Position einfriert, und später, wenn ich mich entscheide, setze seine Bewegung fort?

Ich möchte nur die Bewegung dieser SKSpriteNode pausieren. Ich möchte die SKScene nicht pausieren. Nur die Bewegung dieses 1 SKSpriteNode

Antwort

5

Sie sollten eine Aktion mit Schlüssel auszuführen:

square.runAction(SKAction.repeatActionForever(moveSequence), withKey:"moving") 

Dann Geschwindigkeit Eigenschaft Gebrauch Maßnahmen sie pausieren:

if let action = square.actionForKey("moving") { 

     action.speed = 0  
} 

oder es unpause:

action.speed = 1 
+0

Dank Wirbelwind! Funktioniert perfekt. Wenn ich eine Gruppe von SKSpriteNodes habe, sagen wir 5 davon. Was ist der beste Weg, die Eigenschaft "Geschwindigkeit" der Aktion zu verwenden, um sie alle zu stoppen? Ich habe versucht, den Schlüssel "Verschieben" auf alle von ihnen, aber es nur einen der SKSpriteNodes :) – Questions

+0

@Questions Zuerst alle quadratischen Knoten (z. B. Square.name = "Quadrat"), dann [EnumerateChildNodesWithName] (http : //stackoverflow.com/q/24213436/3402095) Methode, um auf jedes Quadrat mit seinem Namen zuzugreifen und seine Aktion zu ändern, die mit dem Schlüssel "moving" verbunden ist. – Whirlwind

6

Eine Alternative zu @Whirlwinds Antwort, falls Sie eine Reihe von Aktionen haben bei pausiert werden müssen, die nicht in einer Gruppe und nicht nur in der Bewegung sind, ist es, den Knoten selbst anzuhalten. Allen SKNodes ist eine paused-Eigenschaft zugeordnet.

Ex. square.paused = true

+0

Danke für die Alternative. Beide Methoden haben funktioniert: D – Questions