如何知道合成动画“ ScalarKeyFrameAnimation”(或类似内容)何时完成

时间:2019-12-13 07:40:50

标签: c# .net animation uwp composition

我需要知道Composition之类的ScalarKeyFrameAnimation动画何时完成。这该怎么做?我打了如下电话:

    public void Start()
    {
        if (!IsLoaded) return;
        //SET TARGET PROPERTY - OPACITY
        TargetScalarKeyFrameAnimation.Target = "Opacity";

        //SET FROM OPACITY
        if (From < 0) this.Opacity = 0;
        else if (From > 1) this.Opacity = 1;
        else this.Opacity = From;

        //SET FINAL VALUE (OPACITY) 
        if (To < 0) TargetScalarKeyFrameAnimation.InsertKeyFrame(1f, 0);
        else if (To > 1) TargetScalarKeyFrameAnimation.InsertKeyFrame(1f, 1);
        else TargetScalarKeyFrameAnimation.InsertKeyFrame(1f, (float)To);

        //SET DURATION
        if (Duration.TotalMilliseconds > 0) TargetScalarKeyFrameAnimation.Duration = Duration;
        else TargetScalarKeyFrameAnimation.Duration = TimeSpan.FromSeconds(1);

        //SET DELAY
        if (Delay.TotalMilliseconds > 0) TargetScalarKeyFrameAnimation.DelayTime = Delay;
        else TargetScalarKeyFrameAnimation.DelayTime = TimeSpan.FromMilliseconds(0);

        //START
        this.StartAnimation(TargetScalarKeyFrameAnimation);
    }

但是如何获得通知动画已经完成?这将有助于同步UI和其他动画。 StoryboardAnimation为此发生了一个事件。

1 个答案:

答案 0 :(得分:0)

  

如何知道Composition动画“ ScalarKeyFrameAnimation”(或类似内容)何时完成

当前,没有可以检测合成Api动​​画结束的事件。对于您的方案,您可以将timerInterval设置为与动画持续时间相同,并同时调用StartAnimation和计时器Start。然后可以检测到在计时器Tick事件中完成的动画。