使用完成处理程序调用 Swift 中的连续动画

Calling consecutive animations in Swift with completion handler

我正在制作一个可以显示化学反应动画的应用程序。每个原子都是一个 SCNSphere,并使用 SCNAction 进行动画处理。我正在尝试使用 runAction() 中的完成处理程序在当前操作完成后调用下一个动画,因为每个原子必须进行许多不同的运动。

这只是我为简化流程而编写的一些测试代码,实际代码将遍历 atom 个对象的数组。

func animate() {
    let atom1 = atomNodes[0]
    atom1.runAction(atoms[0].actions[0]) {
        atom1.runAction(SCNAction.move(by: SCNVector3(-10, 0, 0), duration: 1.0))
        print("Done")
    }
}

print("Done") 语句工作得很好,它只在操作完成后调用,但新的 SCNAction 不会触发。我是不是错过了让下一个动作开始的东西?

我最终选择了

Timer.scheduledTimer(timeInterval: stepDuration, target: self,
                     selector: #selector(self.animate), userInfo: nil, repeats: true)

类似于 James P 的评论。