2014-06-23 11 views
5

In meinem Spiel verwende ich SKAction repeatActionForever: Methode, um regelmäßig einige Methoden mit performSelector: aufrufen. Wie ich gesehen habe, gibt es keine Möglichkeit, dies zu stoppen. Ich habe versucht, über removeActionForKey: oder removeAllActions zu stoppen - keine Ergebnisse. Ich möchte diese Aktion nicht rekursiv aufrufen, also brauche ich Hilfe.Stop RepeatActionForever in Sprite Kit

UPDATE: Mein SKAction Code

levelTimer=[SKAction repeatActionForever:[SKAction sequence:@[[SKAction waitForDuration:30.0],[SKAction performSelector:@selector(moveToNextLevel) onTarget:self]]]]; 
[self runAction:levelTimer withKey:@"levelTimerAction"]; 
+0

Diese Methode scheint Aktionen zu erwarten, die eingegeben werden. – uchuugaka

Antwort

4

Die repeatActionForever Methode sollte auf dem Knoten genannt werden, die die SKAction auf ausgeführt wird, so:

[sprite removeActionForKey:@"forevercalleraction"]; 

Angenommen, Sie die Aktion hinzufügen, wie Dies und die sprite Variable wird nicht lokal hinzugefügt (deklariert in. h):

[sprite runAction:repeatPerformSelectorAction withKey:@"forevercalleraction"]; 

die oben Zusammengefasst, überprüfen Sie diese:

  1. der Knoten, der die Aktion läuft in .h
  2. erklärt
  3. Sie die gleiche Schlüsselzeichenfolge verwenden für das Hinzufügen und Entfernen der Aktion
  4. Sie versuchen, um den removeActionForKey auf demselben Knoten aufzurufen, der in 1 deklariert wurde.

Hoffe, es hilft!

+0

Siehe meine aktualisierte Frage. Ich füge Aktion nicht zu einem Sprite hinzu. Ich füge das meinem SKScene hinzu. Und ich habe versucht, es über [self removeActionForKey: @ "levelTimerAction"] zu entfernen; –

+1

Muss der SKScene hinzugefügt werden, da Sie einen einfachen Knoten erstellen und diese Aktion zu diesem unsichtbaren Knoten hinzufügen können? – nzs

+0

Danke, jetzt funktioniert es :) Unsichtbarer Knoten, der meine Aktionen ausführt. Hm, dieser Unsinn macht Sinn –