本文介绍了使用CAMediaTimingFunction计算时间(T)的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Cocoa/Touch中,CAMediaTimingFunction表示四个控制点,它们指定计时函数的三次Bezier曲线。对于我正在编写的应用程序,我希望能够在任意时间t(0->1)提取所述Bezier曲线的结果。令我困惑的是,当我查找如何do this时,结果也应该是一个点,而不是标量:
然而,Apple的实现产生了一个标量值(您可以在此图上看到他们绘制了x(T)与t:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Animation_Types_Timing/Articles/Timing.html#//apple_ref/doc/uid/TP40006670-SW1)
那么,Apple会忽略结果的y坐标,而只处理x吗?这似乎很奇怪,因为这样您就不需要传入控制点,而是需要传递控制标量,因为y根本不会影响结果。
推荐答案
注意:我不是核心动画专家。这只是我阅读您链接的文档后的理解。
Apple在这里混合了坐标系,这造成了一些混乱。
x(t)
在示例中,曲线图表示沿某条路径的标量级数,而不是物理坐标。
CAMediaTimingFunction中使用的控制点用于描述该级数,而不是几何点。更令人困惑的是,控制点中的x
实际上映射到曲线图上的t
,控制点中的y
映射到曲线图上的x(t)
。
以kCAMediaTimingFunctionEaseInEaseOut
的曲线图为例,该曲线图大致由控制点(0,0)、(0.5,0)、(0.5,1)、(1,1)来描述。
这篇关于使用CAMediaTimingFunction计算时间(T)的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!