有人知道是否有可能以某种方式创建自定义 NSAnimationCurve 以便它可以与 NSViewAnimation 对象一起使用,但与标准线性 EaseIn/Out 不同?
问问题
519 次
1 回答
2
实际上已经找到了我的问题的答案。我为我的动画 NSViewAnimation 对象创建了一个委托,并使用以下方法设置它:
[animationObject setDelegate: delegateObject];
然后在我的 delagateObject 的头文件中,我将其设置为使用“NSAnimationDelegate”协议,键入以下字符串:
@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,但无需更改开始和结束关键帧即可正常工作,并且动画开始和结束时的速度差异更大。
于 2011-03-31T06:44:19.387 回答