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

标签 objective-c sprite-kit sequence skaction

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

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

最佳答案

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

关于objective-c - 使用不同的节点运行 SKActions 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823428/

相关文章:

swift - touchesBegan 未在 Spirit Node 上被调用

ios - 使用 swift 查找 SKNode 的相对 Y 位置

jquery - 使用 jquery 中断并重新启动 setTimeOut 事件序列?

ios - 改变 UIViewController

ios - 如何在没有动画的情况下以编程方式执行 "show (e.g Push)"segue?

ios - 游戏中心排行榜已弃用?

image - Windows批处理脚本复制图像序列中的文件

kotlin - 我可以指示 Kotlin 关联第一个元素而不是与键提取器匹配的最后一个元素吗?

objective-c - 比较 Cocoa 中的字符串

objective-c - 如何在 Mac OS 中执行特定(外部)应用程序的菜单项?