La implementación de una devolución de llamada CAKeyFrameAnimation en MonoTouch al final de un juego de animación?

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

Pregunta

Mi código funciona y me animan, pero no estoy seguro de cómo hacer esto:

Animación Fin de devolución de llamada para CALayer?

... en MonoTouch.

Esto es lo que tengo:

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 ya está heredando de UIView y no puede heredar de dos clases. ¿Cómo iba a llamar a una función llamada "AnimationsComplete ()" cuando se hace la animación?

¿Fue útil?

Solución

No estoy frente a mi máquina dev, pero creo que se crea una clase que desciende de CAAnimationDelegate, poner en práctica el "vacío AnimationStopped (anim CAAnimation, bool terminado) Método" y luego asignar una instancia de esta clase para pathAnimation. delegado (en la muestra).

Por lo tanto, algo como esto ( Advertencia - código no probado ):

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top