c# - 在 UWP 中将事件侦听器附加到 MotionAnimation
问题描述
我以这种方式设置了 MotionAnimation:
public static void StartSpringAnim(this Panel view)
{
Visual viewVisual = ElementCompositionPreview.GetElementVisual(view);
SpringScalarNaturalMotionAnimation springAnimation = viewVisual.Compositor.CreateSpringScalarAnimation();
springAnimation.Period = TimeSpan.FromSeconds(0.1);
springAnimation.DampingRatio = 0.5f;
springAnimation.StopBehavior = AnimationStopBehavior.SetToFinalValue;
springAnimation.InitialValue = (float) view.Margin.Left;
springAnimation.FinalValue = (float)view.Margin.Left + 50;
viewVisual.StartAnimation("Offset.X", springAnimation);
}
我想为动画附加一个事件处理程序,以便在动画完成后收到通知(以便我可以执行一些进一步的操作)。
我怎样才能达到这样的结果?
谢谢!
解决方案
您可以使用跟踪合成动画CompositionScopedBatch
public static void StartSpringAnim(this Panel view)
{
Visual viewVisual = ElementCompositionPreview.GetElementVisual(view);
SpringScalarNaturalMotionAnimation springAnimation = viewVisual.Compositor.CreateSpringScalarAnimation();
springAnimation.Period = TimeSpan.FromSeconds(0.1);
springAnimation.DampingRatio = 0.5f;
springAnimation.StopBehavior = AnimationStopBehavior.SetToFinalValue;
springAnimation.InitialValue = (float)view.Margin.Left;
springAnimation.FinalValue = (float)view.Margin.Left + 50;
var scopedBatch = viewVisual.Compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
scopedBatch.Completed += Animation_Completed;
viewVisual.StartAnimation("Offset.X", springAnimation);
scopedBatch.End();
}
private void Animation_Completed(object sender, CompositionBatchCompletedEventArgs args)
{
//this will fire on animation complete
}
更多信息在这里:https ://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositionscopedbatch
推荐阅读
- python - 在它的身体上移动箭头
- dynamics-crm - 在 Dynamics 365(版本 9.0)中修改业务流程的“LocalizedName”
- java - swing 组件无法在 javafx 应用程序中完全运行
- c# - C# 线性函数,带有 null 的小数数组
- email - 无法在谷歌应用程序脚本中将内联图像添加到电子邮件
- javascript - 使用计数器从函数中获取变量
- django - Django-Oscar form fork - 错误未知字段(但字段在模型中)
- prolog - 如何以局部变量作为参数调用foreach中的函数?
- php - Php Mysqli如何总结两个不同的条件结果
- android - 我的测试用例在 android studio 一起运行但单独通过时失败