2

NSViewAnimationオブジェクトで使用できるようにカスタムNSAnimationCurveを作成できるかどうかを誰かが知っていますが、標準の線形であるEaseIn / Outとは異なりますか?

4

1 に答える 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 に答える