2011-03-31 65 views
2

有人知道是否有可能以某種方式創建自定義NSAnimationCurve,以便它可以與NSViewAnimation對象一起使用,但與標準線性,EaseIn/Out不同?自定義NSAnimationCurve

回答

2

其實a已經找到了我的問題的答案。我創建了一個委託我的動畫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但沒有必要改變開始和結束關鍵幀和與速度的更顯著差異正常工作動畫的開始和結束。