2014-11-11 8 views
5

Sono nuovo di Swift e SpritKit e ho alcuni problemi con il mio gioco.Xcode SpriteKit - Rimozione di Sprites e interruzione di un'azione - repeatActionForever

Nella mia sezione didMoveToView(view: SKView) { } del mio codice, chiamo l'istruzione seguente che popola i mostri sullo schermo. Nel mio func addMonster() { } I mostri sono quindi animati per spostarsi dal lato destro, al lato sinistro dello schermo. Una volta fuori dallo schermo, sul lato opposto, lo sprite viene rimosso.

CODE A

runAction(SKAction.repeatActionForever(
     SKAction.sequence([ 
      SKAction.runBlock(addMonster), 
      SKAction.waitForDuration(1.0),SKAction. 
      ]) 
     )) 

In aggiunta funzione di ER Mons †, che io chiamo il seguente codice che si muove il mostro sullo schermo.

let actualDuration = random(min: CGFloat(6.0), max: CGFloat(10.0)) 
    let actionMove = SKAction.moveTo(CGPoint(x: -monster.size.width/2, y: actualY), duration: NSTimeInterval(actualDuration)) 
    let actionMoveDone = SKAction.removeFromParent() 
    monster.runAction(SKAction.sequence([actionMove, actionMoveDone])) 

Tutto il codice sopra funziona correttamente.

Quando l'utente ha ucciso una quantità X di mostri, voglio che tutti gli altri mostri dello schermo scompaiano e smettano di spawnare.

Le mie domande sono, come faccio a) Interrompere il CODICE A dai mostri di deposizione e b) come ottengo i mostri che sono nella vista, vengono rimossi?

Grazie,

Ryann

+0

a) removeAllActions() o removeAcionForKey() si fermerà il tuo codice A. b) aggiungi tutti i mostri in un array che ti aiuterà a tracciare/rimuovere tutto il mostro sullo schermo. – Shoaib

+0

Come li aggiungo a un array e come faccio a farvi riferimento? Con removeAllActions, come faccio a chiamarlo quando lo Sprite viene creato in una funzione e quindi non può essere referenziato al di fuori della funzione? – Ryann786

risposta

10

Quando si esegue l'azione, utilizzare

monster.runAction(SKAction.sequence([actionMove, actionMoveDone]), withKey: "actionA") 

quindi annullare con

monster.removeActionForKey("actionA") 
Problemi correlati