1

私のコードは機能し、アニメーション化しますが、これを行う方法がわかりません:

CALayer のアニメーション終了コールバック?

...モノタッチで。

これが私が持っているものです:

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 から継承されており、2 つのクラスから継承することはできません。これがアニメーション化されたときに、「AnimationsComplete()」という関数をどのように呼び出すのですか?

4

1 に答える 1

4

私は開発マシンの前にいませんが、CAAnimationDelegate から派生したクラスを作成し、「void AnimationStopped(CAAnimation anim, bool finished) メソッド」を実装してから、このクラスのインスタンスを pathAnimation.Delegate に割り当てていると思います (あなたのサンプル)。

したがって、次のようなもの (警告 - テストされていないコード):

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.
    }
}
于 2010-02-08T08:40:05.877 に答える