2014-06-23 11 views
5

Nel mio gioco, sto usando il metodo SKAction repeatActionForever: per chiamare periodicamente un metodo con performSelector:. Come ho visto, non c'è modo di fermarlo. Ho provato a interrompere tramite removeActionForKey: o removeAllActions - nessun risultato. Non voglio chiamare questa azione in modo ricorsivo, quindi ho bisogno di aiuto.Stop repeatActionForever in Sprite Kit

UPDATE: Il mio codice SKAction

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

Questo metodo sembra prevedere le azioni con chiave. – uchuugaka

risposta

4

Il metodo repeatActionForever dovrebbe essere chiamato sul nodo che la SKAction è in esecuzione, in modo da:

[sprite removeActionForKey:@"forevercalleraction"]; 

supponga si aggiunge l'azione come questo e la variabile sprite non viene aggiunta localmente (dichiarata in .h):

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

Riassumendo quanto sopra, controllare questi:

  1. il nodo che esegue l'azione è dichiarata in .h
  2. si utilizza la stessa stringa chiave per aggiungere e rimuovere l'azione
  3. si tenta chiamare removeActionForKey sullo stesso nodo dichiarato in 1.

Sperare che aiuti!

+0

Vedere la mia domanda aggiornata. Aggiungo l'azione non a uno sprite. Aggiungo questo al mio SKScene. E ho provato a rimuoverlo tramite [self removeActionForKey: @ "levelTimerAction"]; –

+1

È necessario aggiungere SKScene, dato che è possibile creare un nodo semplice e aggiungere questa azione a quel nodo invisibile ..? – nzs

+0

Grazie, ora funziona :) Nodo invisibile che esegue le mie azioni. Hm, questa assurdità ha senso –

Problemi correlati