Подключите прослушиватель событий к MotionAnimation в UWP - PullRequest
0 голосов
/ 29 декабря 2018

Я настроил 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);
}

Я хотел бы прикрепить обработчик событий к анимации, чтобы я получал уведомление после завершения анимации (чтобы я мог выполнить некоторые действия).дальнейшие операции).

Как мне достичь такого результата?

Спасибо!

1 Ответ

0 голосов
/ 29 декабря 2018

Вы можете отслеживать анимацию композиции, используя 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...