2013-09-25 9 views
7

Come posso verificare se uno SKNode sta già eseguendo un'azione prima di eseguire un'azione su di esso? Voglio essere in grado di fare qualcosa di simile ...verifica se un SKNode sta eseguendo una SKAction

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

Se non c'è costruito nel modo in cui sto pensando di creare un nuovo BOOL immobili per lo svolgimento dello Stato azione.

risposta

11

Esaminare le azioni denominate utilizzando uno dei metodi basati su chiave SKAction. Quindi dovresti eseguire la tua azione utilizzando l'equivalente denominato a runAction: che è runAction:withKey:. Se un'azione con la stessa chiave è già in esecuzione, viene rimossa prima che venga aggiunta la nuova. In alternativa, utilizzare actionForKey: per verificare se un'azione è già in esecuzione come si sta tentando di fare ora nel codice, quindi removeActionForKey: per rimuoverlo o gestirlo secondo necessità.

+1

Questa è una risposta migliore, in quanto è possibile verificare un'azione specifica, piuttosto che controllare se lo sprite sta eseguendo alcuna azione (ovviamente, questo è se si conosce la chiave per l'azione :) – Septronic

14

Ci scusiamo per la risposta in ritardo, ma è possibile utilizzare il metodo sprite hasActions per verificare se uno sprite sta attualmente eseguendo azioni.

if (![mySprite hasActions]) 
{ 
    [mySprite runAction:action]; 
} 
Problemi correlati