为什么要使用弹簧? 弹簧是一种常见的运动体验,我们都曾经在生活中经历过;从螺旋弹簧玩具到包含弹簧块的物理教室体验。 弹簧的运动不稳定,这通常会为观察它的人带来有趣而令人愉快的情绪反应。 因此,对于那些渴求创建更为生动的运动体验的人来说,弹簧的运动在应用程序 UI 中得到了很好的运用:“弹出”给最终用户,而不是传统的贝塞尔曲线。 在这些情况下,弹簧运动不仅能产生更为生动的运动体验,还能帮助吸引人们注意新的或目前正在显示动画效果的内容。 根据应用程序的品牌或运动语言,弹簧的振荡更加显然而显眼,但在其他情况下,它的运动不明显。
定义一个绿色的圆 给它一个点击事件
<Ellipse x:Name="green_Ellipse" Height="100" Width="100" Fill="Green" PointerPressed="green_Ellipse_PointerPressed"/>
private void green_Ellipse_PointerPressed(object sender, PointerRoutedEventArgs e)
{
Visual greenVisual= ElementCompositionPreview.GetElementVisual(green_Ellipse);
greenVisual.Offset = new Vector3(1000, 300, 0);
var springAnimation = greenVisual.Compositor.CreateSpringVector3Animation();
springAnimation.DampingRatio = 0.3f;
springAnimation.Period = TimeSpan.FromSeconds(0.1);
springAnimation.InitialValue = new Vector3(1000, 0, 0);
springAnimation.FinalValue = new Vector3(1000, 500, 0);
greenVisual.StartAnimation("Offset", springAnimation);
}
DampingRatio – 表示在动画中使用的弹簧运动的阻尼级别 DampingRatio = 0 Undamped – 弹簧将振荡很长时间 0 < DampingRatio < 1 Underdamped – 弹簧将由少变多增加振荡幅度。 DampingRatio = 1 Criticallydamped – 弹簧不会振荡。 DampingRation > 1 Overdamped – 弹簧将通过突然减速而不振荡快速到达其目的地 Period – 弹簧执行单次振荡所花费的时间。 Final/Starting Value – 定义弹簧运动的开始和结束位置(如果未定义,则开始值和/或最终值将是当前值)。 Initial Velocity 运动的编程初始速度。
|