在一个序列中同时运行两个动作

时间:2015-06-29 15:21:50

标签: swift sprite-kit sequence skaction

我不确定我所寻求的是否可行,但我只是在检查以确保我没有做到这一点。

目前我有两个序列,它们同时运行。每个序列通过等待3秒开始,然后一个序列缩放节点,另一个序列调整该节点的alpha。所以代码看起来像这样:

node.runAction(SKAction.sequence([animationWait, animationScale]))
node.runAction(SKAction.sequence([animationWait, animationAlpha]))

但是有没有办法在一个序列中同时运行animationScale和animationAlpha?所以它看起来像这样(这不起作用,但我希望你能看到我正在尝试做的事情):

node.runAction(SKAction.sequence([animationWait, (animationScale, animationAlpha)]))

2 个答案:

答案 0 :(得分:11)

您可以将操作组合到一个序列中:

var actions = Array<SKAction>();

actions.append(SKAction.sequence([animationWait, animationScale]));
actions.append(SKAction.sequence([animationWait, animationAlpha]));

let group = SKAction.group(actions);

node.runAction(group);
  

执行操作时,组成该组的操作将立即立即启动并并行运行。组动作的持续时间是动作集合中持续时间最长的。如果组中的操作的持续时间小于组的持续时间,则操作完成,然后空闲,直到组完成剩余的操作。这在创建重复组的重复动作时最为重要。

答案 1 :(得分:-1)

我刚刚测试了一些东西,它似乎有效。而不是以下:

> order(abs(v-3.141591))[1]
#[1] 42

做的:

node.runAction(SKAction.sequence([animationWait, (animationScale, animationAlpha)]))

我很惊讶它有效。我打算删除这个问题,但有人可能会发现这个方便。

编辑:

以下不再有效

node.runAction(SKAction.sequence([animationWait, [animationScale, animationAlpha]]))

正如evilboxingdragonslayer建议的那样,你需要使用“group”,见下文:

node.runAction(SKAction.sequence([animationWait, [animationScale, animationAlpha]]))