我想永远为2个立方体制作动画,直到用户点击其中一个。动画应该像∞一样。永远动画SCNNode - SceneKit,Swift
这些都是我在sceneView立方体我想动画:
我试图做到这一点与嵌套的动画,它并部分工作。现在,由于动画在开始新动画之前总是等到完成,所以看起来并不平坦。
在继续开发∞动画之前,我想知道是否有更好的(实际上是工作的)方法。这是我当前的代码:
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position = SCNVector3Make(3, 0, 0)
cube2.position = SCNVector3Make(-3, 0, 0)
println("log 0")
SCNTransaction.setCompletionBlock {
println("log 1")
while (animationKey != 1) {
//initially animationKey = 0
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position.x += 1
cube1.position.y += 1
cube2.position.x += 1
cube2.position.y += 1
println("log 2")
SCNTransaction.setCompletionBlock {
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position.x -= 1
cube1.position.y -= 1
cube2.position.x -= 1
cube2.position.y -= 1
println("log 3")
SCNTransaction.setCompletionBlock { animationKey = 1 }
SCNTransaction.commit()
}
println("log 4")
SCNTransaction.commit()
}
}
println("log 5")
SCNTransaction.commit()
println("log 6")
}
输出显示了以下几件事: log 0, log 5, log 6, log 1, log 2, log 4, log 2
...然后它只是log 4
和log 2
交流仍在继续。
有人可以帮我吗?
注意
我想到了一个递归方法会更好,所以我换成
animationKey = 1
与调用,这是在方法......根本不工作了。我的动画工作一次,但现在它刚刚完成了第一个动画后停止,完全忽略了第二和第三动画块...
好的,这已经很棒了。有没有办法将选项分配给SCNAction?所以就像'CurveEaseIn'一样。事情是我希望它是光滑的,但现在它只是完成动画,然后开始下一个...:/ – LinusGeffarth
action.timingMode = SCNActionTimingModeEaseInEaseOut; –
很酷,谢谢:) – LinusGeffarth