【发布时间】:2021-05-12 03:04:48
【问题描述】:
奇怪的是,这段代码没有为 fStop 设置动画:
cameraNode.camera!.wantsDepthOfField = true
cameraNode.camera!.focusDistance = 2
let animation = CABasicAnimation(keyPath: "fStop")
animation.toValue = 0.5
animation.duration = 0.3
cameraNode.camera!.addAnimation(animation, forKey: nil)
虽然这个是:
SCNTransaction.begin()
SCNTransaction.animationDuration = 0.3
cameraNode.camera!.fStop = 0.5
SCNTransaction.commit()
为什么?
【问题讨论】:
-
两者都对我有用,但 CABasicAnimation 在完成时会被删除。
-
感谢您的帮助。这是否意味着删除动画有一些副作用,可以确定为什么它对我不起作用?我没有在其他任何地方使用或存储动画。
-
你确定它没有工作,而不是发生得太快你没有注意到吗?尝试增加持续时间。
-
你是对的,持续时间较长我可以看到它可以工作,但是一旦动画完成,焦距就会重置为动画之前的值(或者至少看起来是这样的)。在动画结束后使用
SCNTransaction,焦距不会再次跳转到初始值。这是记录在案的行为吗?