2014-11-11 12 views
5

Jestem nowy w Swift i SpritKit i mam kilka problemów z moją grą.Xcode SpriteKit - Usuwanie Sprites i zatrzymywanie akcji - repeatActionForever

W mojej sekcji didMoveToView(view: SKView) { } mojego kodu wywołuję poniższą instrukcję, która zapełnia potwory na ekranie. W moim func addMonster() { } Potwory następnie animowane, aby przejść od prawej strony, do lewej strony ekranu. Gdy znikną z ekranu po przeciwnej stronie, duszek zostanie usunięty.

kodują

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

W polu Dodaj Mons † er funkcji wzywam następujący kod, który porusza Monster po ekranie.

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])) 

Wszystkie powyższe kody działają poprawnie.

Kiedy użytkownik zabił X ilość potworów, chcę, aby wszystkie pozostałe potwory ekranu zniknęły i przestały się odradzać.

Moje pytania brzmią, jak mogę a) Zatrzymać KOD A od potworów ib) Jak uzyskać potwory z widoku, które należy usunąć?

Dzięki,

Ryann

+0

a) removeAllActions() lub removeAcionForKey() przestanie Twój kod A. b) dodaj wszystkich potworów do tablicy, które pomogą ci śledzić/usuwać wszystkich potworów na ekranie. – Shoaib

+0

Jak dodać je do tablicy i jak mam się do nich odwoływać? W przypadku metody removeAllActions, w jaki sposób wywołać ją, gdy Sprite jest tworzony w funkcji, a zatem nie można odwoływać się poza tą funkcją? – Ryann786

Odpowiedz

10

Po uruchomieniu działania, należy

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

następnie odwołać go z

monster.removeActionForKey("actionA")