Run SKActions sequence with different nodes

前端 未结 1 1109
清酒与你
清酒与你 2021-01-18 22:39

I know that I can create an SKAction.sequence which will run the actions of one node one by one. But how can I do that if I want to do a sequence with different nodes. I\'d

1条回答
  •  抹茶落季
    2021-01-18 23:18

    If both nodes are uniquely named and are children of the same node, you can use runAction:onChildWithName:, as follows:

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

    More generally, you can use runBlock: to do pretty much anything as a step in an SKAction sequence:

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

    0 讨论(0)
提交回复
热议问题