Реализация обратного вызова CAKeyFrameAnimation в MonoTouch в конце набора анимации? - PullRequest
1 голос
/ 08 февраля 2010

Мой код работает и я анимирую, но я не уверен, как это сделать:

Конец обратного вызова анимации для CALayer?

... в MonoTouch.

Вот что у меня есть:

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 уже наследуется от UIView, и я не могу наследовать от двух классов. Как бы я вызвал функцию, называемую "AnimationsComplete ()", когда это делается анимацией?

1 Ответ

4 голосов
/ 08 февраля 2010

Я не перед моей машиной разработки, но я думаю, что вы создаете класс, происходящий от CAAnimationDelegate, реализуете метод void AnimationStopped (CAAnimation anim, bool законченный) и затем назначаете экземпляр этого класса pathAnimation. Делегат (в вашем образце).

Итак, что-то вроде этого ( предупреждение - непроверенный код ):

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.
    }
}
...