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