有人知道是否可以以某种方式创建自定义 NSAnimationCurve,以便它可以与 NSViewAnimation 对象一起使用,但与标准线性、EaseIn/Out 不同?
最佳答案
其实我的问题已经找到答案了。我已经为我的动画 NSViewAnimation 对象创建了一个委托(delegate)并使用以下方法设置它:
[animationObject setDelegate: delegateObject];
然后在我的 delagateObject 的头文件中,我将其设置为使用“NSAnimationDelegate”协议(protocol),输入以下字符串:
@interface delegateObject : NSObject <NSAnimationDelegate> {
之后我创建一个方法
-(float)animation:(NSAnimation *)animation valueForProgress:(NSAnimationProgress)progress;
这应该是一个描述您的自定义动画曲线的函数。因此,它将动画的进度作为从 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,但可以正常工作,无需更改开始和结束关键帧,并且动画开始和结束时的速度差异更显着。
关于cocoa - 自定义 NSAnimationCurve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494214/