Objective c 使用不同的节点运行SKActions序列

Objective c 使用不同的节点运行SKActions序列,objective-c,sprite-kit,sequence,skaction,Objective C,Sprite Kit,Sequence,Skaction,我知道我可以创建一个SKAction.sequence,它将逐个运行一个节点的操作。但是如果我想对不同的节点进行排序,我该怎么做呢。我想这样做: 从节点A运行操作 等2秒钟 从节点B运行操作 如果两个节点的名称都是唯一的,并且都是同一节点的子节点,则可以使用运行操作:onChildWithName:,如下所示: SKAction *action = [SKAction sequence: @[[SKAction runAction:[SKAction moveTo:CGPointMake

我知道我可以创建一个SKAction.sequence,它将逐个运行一个节点的操作。但是如果我想对不同的节点进行排序,我该怎么做呢。我想这样做:

  • 从节点A运行操作
  • 等2秒钟
  • 从节点B运行操作

  • 如果两个节点的名称都是唯一的,并且都是同一节点的子节点,则可以使用
    运行操作:onChildWithName:
    ,如下所示:

    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];
    
    更一般地说,您可以使用
    runBlock:
    作为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];
    

    感谢您的回答@godel9您能给我看一些示例代码吗?请注意,
    runBlock:
    runAction:onChildWithName:
    根据文档都以“瞬时持续时间”运行,因此如果没有
    waitForDuration:
    操作,此序列将立即运行所有操作。