【问题标题】:How to know when Composition animation 'ScalarKeyFrameAnimation' (or similar) finished如何知道合成动画“ScalarKeyFrameAnimation”(或类似的)何时完成
【发布时间】:2019-12-13 07:40:50
【问题描述】:

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

    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 有一个事件。

【问题讨论】:

    标签: c# .net animation uwp composition


    【解决方案1】:

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

    目前,没有这样的事件可以检测为合成 Api 完成的动画。对于您的场景,您可以将timer 设置为与动画持续时间相同的Interval,并同时调用StartAnimation 和计时器Start。然后可以检测到在定时器Tick事件中完成的动画。

    【讨论】:

    • 感谢您的回答。实际上,我刚刚使用的是这样的东西。因此,这意味着我不需要对我的代码进行任何更改,只需等待 MS 稍后添加事件即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多