Cocoa 自定义NSanimation曲线

Cocoa 自定义NSanimation曲线,cocoa,animation,timing,curve,Cocoa,Animation,Timing,Curve,有人知道是否有可能以某种方式创建自定义NSanimation曲线,以便与NSViewAnimation对象一起使用,但与标准的线性、EaseIn/Out不同?事实上,a已经找到了我问题的答案。我已经为我的动画NSViewAnimation对象创建了一个代理,并使用以下方法设置它: [animationObject setDelegate: delegateObject]; 然后在delagateObject的头文件中,我将其设置为使用“NSAnimationDelegate”协议,并键入以下

有人知道是否有可能以某种方式创建自定义NSanimation曲线,以便与NSViewAnimation对象一起使用,但与标准的线性、EaseIn/Out不同?

事实上,a已经找到了我问题的答案。我已经为我的动画NSViewAnimation对象创建了一个代理,并使用以下方法设置它:

[animationObject setDelegate: delegateObject]; 
然后在delagateObject的头文件中,我将其设置为使用“NSAnimationDelegate”协议,并键入以下字符串:

@interface delegateObject : NSObject <NSAnimationDelegate> { 
这应该是一个描述自定义动画曲线的函数。因此,它将动画的进度作为从0.0到1.0的值,并根据您使用的函数将其转换为从0.0到1.0的新值

我在代码中使用了以下函数:

-(float)animation:(NSAnimation *)animation valueForProgress:(NSAnimationProgress)progress {
float value = -1/(20*(progress+0.047)) +1.045;
return value;
}

它类似于EaseOut,但工作正常,无需更改开始和结束关键帧,动画开始和结束时的速度差异更大

-(float)animation:(NSAnimation *)animation valueForProgress:(NSAnimationProgress)progress {
float value = -1/(20*(progress+0.047)) +1.045;
return value;