2011-03-31 4 views
2

Est-ce que quelqu'un sait s'il est possible de créer un NSAnimationCurve personnalisé pour qu'il puisse être utilisé avec des objets NSViewAnimation mais soit différent du standard linéaire, EaseIn/Out?Custom NSAnimationCurve

Répondre

2

En fait, j'ai déjà trouvé une réponse à ma question. J'ai créé un délégué pour mon animation objet NSViewAnimation et définir à l'aide:

[animationObject setDelegate: delegateObject]; 

ensuite dans le fichier d'en-tête pour mon delagateObject Je l'ai mis à utiliser le protocole « NSAnimationDelegate » taper la chaîne suivante:

@interface delegateObject : NSObject <NSAnimationDelegate> { 

Après que je crée une méthode

-(float)animation:(NSAnimation *)animation valueForProgress:(NSAnimationProgress)progress; 

Cela devrait être une fonction qui décrit votre courbe d'animation personnalisée. Il prend donc la progression de l'animation en valeur de 0.0 à 1.0 et la convertit en nouvelle valeur de 0.0 à 1.0 selon la fonction que vous utilisez.

J'ai utilisé dans mon code la fonction suivante:

-(float)animation:(NSAnimation *)animation valueForProgress:(NSAnimationProgress)progress { 
float value = -1/(20*(progress+0.047)) +1.045; 
return value; 

}

Il est quelque chose comme easeOut mais fonctionne correctement sans avoir besoin de changer de début et de fin KeyFrames et avec une différence beaucoup plus importante de vitesse le début et la fin de l'animation.