2013-09-25 14 views
7

Wie kann ich überprüfen, ob eine SKNode bereits eine Aktion ausführt, bevor eine Aktion ausgeführt wird? Ich möchte in der Lage sein, etwas zu tun, wie ...Überprüfen, ob ein SKNode eine SKAction ausführt

if (![mySprite isRunningActions]) { 
    [mySprite runAction:action]; 
} 

Wenn es keine in Art und Weise aufgebaut ist, ich eine neue BOOL Eigenschaft schafft zum Halten des Aktionszustandes denke.

Antwort

11

Sehen Sie sich die Verwendung von benannten Aktionen mit einer der Schlüsselmethoden SKAction an. Sie würden stattdessen Ihre Aktion mit dem benannten Äquivalent zu runAction: ausführen, das runAction:withKey: ist. Wenn eine Aktion mit demselben Schlüssel bereits ausgeführt wird, wird sie entfernt, bevor die neue hinzugefügt wird. Alternativ können Sie actionForKey: verwenden, um zu sehen, ob eine Aktion bereits ausgeführt wird, wie Sie es jetzt in Ihrem Code versuchen, und dann removeActionForKey:, um sie zu entfernen oder nach Bedarf zu behandeln.

+1

Dies ist eine bessere Antwort, da Sie nach einer bestimmten Aktion suchen können, anstatt zu überprüfen, ob das Sprite eine Aktion ausführt (natürlich, wenn Sie den Schlüssel für die Aktion kennen :) – Septronic

14

Entschuldigung für die späte Antwort, aber Sie können die Sprite-Methode hasActions verwenden, um zu prüfen, ob ein Sprite gerade irgendwelche Aktionen ausführt.

if (![mySprite hasActions]) 
{ 
    [mySprite runAction:action]; 
} 
Verwandte Themen