繁体   English   中英

如何从 ExpressionAnimation 控制变量值?

[英]How do I control a variable value from an ExpressionAnimation?

我在 Microsoft.UI.Xaml.Controls 命名空间中使用AnimatedVisualPlayer 我希望正在播放的动画的进度可以作为双精度使用,以便我可以更新进度滑块的值。

AnimatedVisualPlayer 提供了一个ProgressObject ,它是一个组合对象,您应该通过ExpressionAnimation将其绑定到某个属性。 与其使用此对象来驱动另一个动画,不如将动画进度作为值提供。 有什么简单的方法可以实现这一目标吗?

这是我迄今为止尝试过的:

 internal void ProgressObjectToValue(CompositionObject ProgressObject)
    {
        var c = Window.Current.Compositor;

        SpriteVisual targetVisual = c.CreateSpriteVisual();

        ExpressionAnimation exp = c.CreateExpressionAnimation($"comp.Progress");

        exp.SetReferenceParameter("comp", ProgressObject);

        targetVisual.StartAnimation("Offset.X", exp);


        double progressValue = targetVisual.Offset.X;

有了这个,似乎 targetVisuals 偏移量不受 AnimatedVisualPlayer 的进度约束。 感谢您的任何帮助,您可以提供!

我希望正在播放的动画的进度可以作为双精度使用,以便我可以更新进度滑块的值。

派生自AnimatedVisualPlayer TestUI 项目,我们使用以下方法获取进度值,在测试过程中,它始终返回 0 或 1 值。

var progressPropertySet = (CompositionPropertySet)Playback_Player.ProgressObject;
progressPropertySet.TryGetScalar("progress", out var value);
var progress = value.ToString();

对于这种情况,我们建议您使用计时器来检测动画时间,并使用它来划分 AnimatedVisualPlayer Duration属性以获得进度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM