2014-09-13 14 views
5

So che posso creare uno SKAction.sequence che eseguirà le azioni di un nodo uno per uno. Ma come posso farlo se voglio fare una sequenza con nodi diversi. Mi piacerebbe fare qualcosa di simile:Eseguire la sequenza SKActions con diversi nodi

  1. Esegui azione dal nodo Un'attesa
  2. 2 secondi
  3. azione
  4. Esegui dal nodo B.
+0

Grazie per la tua risposta @ godel9 Potresti mostrarmi qualche codice di esempio? – Christian

risposta

8

Se entrambi i nodi contraddistinte da nomi e sono figli dello stesso nodo, è possibile utilizzare runAction:onChildWithName:, come segue:

SKAction *action = [SKAction sequence: 
    @[[SKAction runAction:[SKAction moveTo:CGPointMake(200.0f, 200.0f) duration:1.0f] 
      onChildWithName:@"NODEA"], 
     [SKAction waitForDuration:2.0f], 
     [SKAction runAction:[SKAction moveTo:CGPointMake(200.0f, 200.0f) duration:1.0f] 
      onChildWithName:@"NODEB"]]]; 

[parent runAction:action]; 

Più in generale, è possibile utilizzare runBlock: fare praticamente tutto come passo in una sequenza SKAction:

SKAction *action = [SKAction sequence: 
    @[[SKAction runBlock:^{ 
      [nodeA runAction:[SKAction moveTo:CGPointMake(200.0f, 200.0f) duration:1.0f]]; 
     }], 
     [SKAction waitForDuration:2.0f], 
     [SKAction runBlock:^{ 
      [nodeB runAction:[SKAction moveTo:CGPointMake(200.0f, 200.0f) duration:1.0f]]; 
     }]]]; 

[parent runAction:action]; 
Problemi correlati