2010-02-08 18 views
1

Mes oeuvres de code et j'Animer, mais je ne sais pas comment faire:Implémentation d'un rappel CAKeyFrameAnimation dans MonoTouch à la fin d'un jeu d'animations?

Animation End Callback for CALayer?

... à MonoTouch.

Voici ce que j'ai:

public partial class MyCustomView: UIView 
{ 
    // Code Code Code 

    private void RunAnimation() 
    {   
     CAKeyFrameAnimation pathAnimation = new CAKeyFrameAnimation(); 
     pathAnimation.KeyPath = "position"; 
     pathAnimation.Path = trail; //A collection of PointFs 
     pathAnimation.Duration = playbackSpeed; 
     Character.Layer.AddAnimation(pathAnimation,"MoveCharacter"); 
    } 

    //Code Code Code 
} 

MyCustomView hérite déjà de UIView et je ne peux pas hériter de deux classes. Comment est-ce que j'appellerais une fonction appelée "AnimationsComplete()" quand ceci est fait en animant?

Répondre

4

Je ne suis pas devant ma machine de développement, mais je pense que vous créez une classe descendant de CAAnimationDelegate, implémentez la méthode "void AnimationStopped (CAAnimation anim, bool finished)" puis assignez une instance de cette classe à pathAnimation .Déléguer (dans votre échantillon).

Donc, quelque chose comme ça (avertissement - code non testé):

public partial class MyCustomView: UIView 
{ 
    private void RunAnimation() 
    {   
     CAKeyFrameAnimation pathAnimation = new CAKeyFrameAnimation(); 

     // More code. 

     pathAnimation.Delegate = new MyCustomViewDelegate(); 

    } 
} 

public class MyCustomViewDelegate : CAAnimationDelegate 
{ 
    public void AnimationStopped(CAAnimation anim, bool finished) 
    { 
     // More code. 
    } 
} 
+0

Ok, ceci est ma faute de ne pas expliquer cela correctement. Le problème est que la classe que j'utilise hérite déjà de UIView, donc je ne peux pas hériter de deux classes. Je vais mettre à jour ma question. – Abel

+1

Je ne pense pas que cela aura de l'importance. Le CAAnimationDelegate sera une classe * séparée *. Donc, vous aurez les classes MyCustomView et MyCustomViewDelegate. Ensuite, dans RunAnimation(), vous aurez pathAnimation.Delegate = new MyCustomViewDelegate(); (par exemple). – dommer

+0

Vous avez parfaitement raison. Merci pour l'aide! – Abel