如何创建 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 引用就会让您走上正确的道路。
我打算在加载时在网格 (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 引用就会让您走上正确的道路。