【问题标题】:Run SKActions sequence with different nodes使用不同的节点运行 SKActions 序列
【发布时间】:2014-09-13 12:52:01
【问题描述】:

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

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

【问题讨论】:

  • 感谢您的回答@godel9 您能给我看一些示例代码吗?

标签: objective-c sprite-kit sequence skaction


【解决方案1】:

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

【讨论】:

  • 请注意,根据文档,runBlock:runAction:onChildWithName: 都以“瞬时持续时间”运行,因此如果您没有 waitForDuration: 操作,此序列将立即运行所有内容在那里。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多