cocoa - 自定义 NSAnimationCurve

标签 cocoa animation timing curve

有人知道是否可以以某种方式创建自定义 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/

相关文章:

cocoa - 是否有可能有一个结合多个关键路径的绑定(bind)?

ios - CAKeyframeAnimation 组位置

c# - C# 中的哈希摘要/数组比较

C++ - 每 X 毫秒执行一次函数

c++ - 在 Cocoa 上创建后窗口消失

macos - 没有 Storyboard或使用 Swift 的 xib 文件的 OSX 应用程序

objective-c - 使用核心动画制作高斯模糊动画?

jquery - 非 chrome 浏览器中的动画问题

jquery - 我如何使这个 jQuery 动画在第二次单击时反转/切换/向后播放?

c - GDK3/GTK3 窗口更新的精确计时