swift - 如何对 RealityKit 动画完成执行操作
问题描述
在WWDC19 演讲中,他们展示了如何为实体设置动画并在动画完成时执行操作(参考第 12 分钟),如下所示:
let animationController = move(to: flipUpTransform, relativeTo: parent, duration: 0.25, timingFunction: .easeInOut)
animationController.completionHandler {
// Perform some action
}
但看起来他们删除或从未添加 this completionHandler
。相反,它们具有isCompleted
布尔属性。我是 swift 新手,所以我不知道isCompleted
在动画完成后使用它来执行一些操作。我该如何解决这个问题?
解决方案
文档说:
如果您想在动画的某些方面发生时收到警报,请查找 AnimationEvents 中的事件之一。
因此,您可以使用 Combine 来在动画结束时获得通知。所以
let animation = entity.move(to: targetTransform, relativeTo: nil, duration: 1)
arView.scene.publisher(for: AnimationEvents.PlaybackCompleted.self)
.filter { $0.playbackController == animation }
.sink(receiveValue: { event in
/ * your completion handler */
}).store(in: &subscriptions)
推荐阅读
- python - 无法选择已经在 appium (python selenium)中的元素中的元素
- python - 如何分割 3D 点?
- c# - 天蓝色函数中的 TaskScheduler 是什么?
- python - 无法在 django 模板中编码解码
- scala - 如何将 BlockMatrix(org.apache.spark.mllib.linalg.distributed.BlockMatrix) 保存到 hdfs 或本地?
- javascript - 分组折线图,如何以重复模式绘制线条
- c++ - 将 2D 矢量转换为 FFTW_Complex
- alation - 用于获取列级元数据的 Alation API
- php - PayPal订阅获取交易清单
- lambda-calculus - 评估 lambda 演算 - OR FALSE TRUE