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

时间:2014-09-13 12:52:02

标签: objective-c sprite-kit sequence skaction

我知道我可以创建一个SKAction.sequence,它将逐个运行一个节点的动作。但是如果我想用不同的节点做一个序列,我怎么能这样做呢。我想做那样的事情:

  1. 从节点A运行操作
  2. 等待2秒
  3. 从节点B运行操作。

1 个答案:

答案 0 :(得分:8)

如果两个节点都是唯一命名的并且是同一节点的子节点,则可以使用runAction: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];