Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift-如何为同一功能中的两个不同节点同时运行2个动作(线性模式)_Swift_Skaction_Sknode - Fatal编程技术网

Swift-如何为同一功能中的两个不同节点同时运行2个动作(线性模式)

Swift-如何为同一功能中的两个不同节点同时运行2个动作(线性模式),swift,skaction,sknode,Swift,Skaction,Sknode,我有一个函数,其中我需要一个接一个地运行两个操作。 e、 g 斯威夫特似乎正在同时执行这些操作。 这正是我不希望在比赛中发生的事情。 我希望action2在action1完成后开始。 我该怎么办? 非常感谢。您可以在调用node1时传递一个完成处理程序。runAction将在node1的操作完成时启动node2的操作。例如: node1.runAction(action1) { node2.runAction(action2) } 编辑 针对您的评论,这里有一个可能的解决方案:像这样

我有一个函数,其中我需要一个接一个地运行两个操作。 e、 g

斯威夫特似乎正在同时执行这些操作。
这正是我不希望在比赛中发生的事情。
我希望action2在action1完成后开始。
我该怎么办?

非常感谢。

您可以在调用
node1时传递一个完成处理程序。runAction
将在
node1
的操作完成时启动
node2
的操作。例如:

node1.runAction(action1) {
    node2.runAction(action2)
}
编辑

针对您的评论,这里有一个可能的解决方案:像这样定义
runAction1
(我假设
runAction1
是一个类上的方法)

然后这样使用:

node1.runAction1(completion: node2.runAction2)

希望这能有所帮助。

实际上我的帖子有点漏洞。那么,指定为node1.runAction1的这两个动作和下一个动作在不同的函数中。事实上,我调用的是func1-animateTheFirstBall()和func2-animathesecondball(),而不是node1.runAction1和其他。是的,请。我非常欣赏一个简单的例子,因为我不经常使用闭包(我想这就是你所说的)。谢谢你的努力。是的,效果很好。这就结束了我漫长的不眠之夜。再次非常感谢。很高兴我能帮忙!祝你的项目好运!另外,你提到过你不熟悉闭包——如果你有时间的话,我真的建议你研究一下闭包,因为它们在很多地方都很有用:)苹果的Swift编程语言详细介绍了它们。
func runAction1(completion: () -> Void) {
    // ...
    self.runAction(action, completion: completion)
}
node1.runAction1(completion: node2.runAction2)