2013-09-27 3 views
20

Ich habe eine Unterklasse von SKSpriteNode (monsterNode). Es läuft automatisch auf dem Bildschirm mit Vektoren, um dem Spieler zu folgen. Ich bin derzeit folgende Maßnahmen es um laufen zu lassen:Ist es möglich, eine SKAction-Mid-Action zu beenden?

SKAction *actionMove = [SKAction moveTo:actualDistance duration:time]; 
     [self runAction:actionMove completion:^ { 
      _currentState = SVGMonsterStateIdle; 
     }]; 

Ich frage mich, wenn sie möglich zu machen, so die monsterNode tatsächlich stoppt die Aktion ausgeführt wird, wenn sie die Grenze des iOS-Gerät Bildschirm treffen. Ich habe derzeit SKSpriteNode Grenzen an den Rändern des Bildschirms, verbunden mit einem Kontaktdelegierten, um zu benachrichtigen, wenn das Monster und die Wände Kontakt aufnehmen. Das bedeutet jedoch nichts, wenn ich die Aktion des Monsters nicht wirklich stoppen kann. Das Monster muss an den Grenzen des Bildschirms anhalten. Wenn es nicht möglich ist, eine SKAction mitten in der Ausführung zu stoppen, gibt es dafür einen Umweg?

Antwort

36

Blick auf die SKNode.h Header-Datei - es hat zwei Funktionen aufgelistet:

- (void)removeActionForKey:(NSString *)key; 
- (void)removeAllActions; 

Letzteres funktioniert: [monsterNode removeAllActions];

+0

schießen. Ich habe in der falschen Dokumentation nachgesehen (SKAction Dokumentation). Vielen Dank! – EvilAegis

+0

Folgefrage: Es scheint einen Knoten zu geben, um die Schlüsseleigenschaft zu setzen. Unterklasse? – Jonny

+2

Edit: anstelle von '[node runAction: myaction]', benutze '[node runAction: myaction withKey: @" mykey "]' ;. – Jonny