在动画集结束时在 MonoTouch 中实现 CAKeyFrameAnimation 回调?

Posted

技术标签:

【中文标题】在动画集结束时在 MonoTouch 中实现 CAKeyFrameAnimation 回调?【英文标题】:Implementing a CAKeyFrameAnimation callback in MonoTouch at the end of an animation set? 【发布时间】:2010-02-08 06:34:34 【问题描述】:

我的代码有效并且我制作了动画,但我不知道该怎么做:

Animation End Callback for 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】:

我不在我的开发机器前,但我认为您创建了一个从 CAAnimationDelegate 派生的类,实现“void AnimationStopped(CAAnimation anim, bool finished) 方法”,然后将此类的实例分配给 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.
    

【讨论】:

好的,这是我没有正确解释的错。问题是我使用的类已经从 UIView 继承,所以我不能从两个类继承。我会更新我的问题。 我认为这无关紧要。 CAAnimationDelegate 将是一个单独的 类。因此,您将拥有 MyCustomView 和 MyCustomViewDelegate 类。然后,在 RunAnimation() 中,您将拥有 pathAnimation.Delegate = new MyCustomViewDelegate(); (例如)。

以上是关于在动画集结束时在 MonoTouch 中实现 CAKeyFrameAnimation 回调?的主要内容,如果未能解决你的问题,请参考以下文章

状态改变时在 React JS 中实现过渡效果

一次生成输出时在python中实现机器学习算法

在移动用户时在 Android 应用程序中实现 GPS 导航

在导航控制器中实现滑出菜单时在哪里以及如何设置协议委托?

在Linux系统中实现CA

在 Eclipse 中使用 J2EE Preview 运行时在 Java EE 中实现 RESTful 服务