我希望能够在SceneKit中一个接一个地运行多个动画.我已经实现了一个运行一个动画的函数:
fileprivate func animateMove(_ move: Move) {
print("Animate move started " + move.identifier)
// I am creating rotateNode
let rotateNode = SCNNode()
rotateNode.eulerAngles.x = CGFloat.pi
scene.rootNode.addChildNode(rotateNode)
// Then I am selecting nodes which I want to rotate
nodesToRotate = ...
// Then I am adding the nodes to rotate node
_ = nodesToRotate.map { rotateNode.addChildNode($0) }
SCNTransaction.begin()
SCNTransaction.animationDuration = move.animationDuration
SCNTransaction.completionBlock = {
rotateNode.enumerateChildNodes { node, _ in
node.transform = node.worldTransform
node.removeFromParentNode()
scene.rootNode.addChildNode(node)
}
rotateNode.removeFromParentNode()
print("Animate move finished " + …Run Code Online (Sandbox Code Playgroud) 这个函数在所有curses(也称为Swift 3)的诅咒之前工作.迁移到Swift 3之后,我的友好且可爱的IDE Xcode显示这个令人沮丧的错误SCNTransaction.completionBlock:
不能调用非函数类型的值'(() - > Void)?'
其他几个帖子处理类似的错误,但这些解决方案都不适用.
线路有什么问题???
func test(_ block: SCNNode, animated: Bool) {
// Do stuff
SCNTransaction.begin()
SCNTransaction.animationDuration = animated ? AnimationDur : 0.0
SCNTransaction.completionBlock {
block.removeFromParentNode()
}
// Animate stuff
SCNTransaction.commit()
}
Run Code Online (Sandbox Code Playgroud)