如何创建 Spring 动画并将其应用于 UWP 控件?

How to create and apply Spring Animation to a UWP control?

我打算在加载时在网格 (LoginBody) 上添加一个具有振荡效果的水平位移。经过研究,我认为 Spring 动画是正确的使用方法。到目前为止,我从 MS 的教程中导出的代码显然是无效的。对于初学者,我不熟悉将 CompositionObject 添加到可视化树中。另外我不确定如何将 "Offset.X" 设置为目标 属性。任何意见,将不胜感激。

  private void LoginBody_Loaded(object sender, RoutedEventArgs e)
    {
        Compositor _compositor = new Compositor();
        SpringScalarNaturalMotionAnimation _springAnimation =_compositor.CreateSpringScalarAnimation();
        _springAnimation.DampingRatio = 0.75f;
        _springAnimation.Period = TimeSpan.FromSeconds(0.5);
        _springAnimation.InitialValueExpressions["FinalValue"] = "this.StartingValue + 250";

        LoginBody.StartAnimation(_springAnimation);
    }

您无需实例化新的合成器,它是您只想引用的全局对象。最简单的方法:

Compositor _compositor = Window.Current.Compositor;

你没有提到 'LoginBody' 是什么或它来自哪里。如果它是已添加到 XAML 文件的 UIElement,则它已经是可视化树的一部分。或者,如果 'LoginBody' 是您通过使用获得的 Visual 类型:

Visual LoginBody = ElementCompositionPreview.GetElementChildVisual(myUIElement);

这也已经是可视化树的一部分(假设 myUIElement 是)。但是,如果 'LoginBody' 是新创建的 SpriteVisual 或 ContainerVisual,例如,那么您必须将它添加到可视化树中,如下所示:

ElementCompositionPreview.SetElementChildVisual(myGrid, LoginBody);

我的猜测是,只要修复您的 Compositor 引用就会让您走上正确的道路。