A implementação de um callback CAKeyFrameAnimation no MonoTouch no final de um conjunto de animação?

StackOverflow https://stackoverflow.com/questions/2219965

Pergunta

As minhas obras de código e eu animado, mas eu não tenho certeza de como fazer isso:

Animação End Callback para CALayer?

... no MonoTouch.

Aqui está o que eu tenho:

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 já está herdando de UIView e eu não pode herdar de duas classes. Como eu chamaria uma função chamada "AnimationsComplete ()" quando isso é feito de animação?

Foi útil?

Solução

Eu não estou na frente da minha máquina de dev, mas acho que você criar um descendente classe de CAAnimationDelegate, implementar o "vazio AnimationStopped (anim CAAnimation, bool acabado) Método" e depois atribuir uma instância dessa classe para pathAnimation. delegado (em sua amostra).

Assim, algo como isto ( alerta - código não testado ):

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.
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top