UWP CompositionObject Animation вызывает черный экран - PullRequest
0 голосов
/ 13 марта 2019

Этот метод вызывается событием щелчка, эффект работает отлично, за исключением того, что весь экран компьютера отключается каждый раз, когда вызывается этот метод (например, 1-й раз работает нормально, 2-й раз отключается, 3-й работает нормально ...)Однажды я щелкнул по нему слишком часто, Windows 10 запросил сбой драйвера дисплея и переключился на базовый дисплей Windows (я использую двойной экран).Кроме того, когда он отключается, курсор превращается в знак занятости и глюки анимации.У кого-нибудь еще была эта проблема?

    private async void oscillate()
    {

        SpringScalarNaturalMotionAnimation _springAnimation2= Window.Current.Compositor.CreateSpringScalarAnimation();
        _springAnimation2.DampingRatio = 0.3f;
        _springAnimation2.Period = TimeSpan.FromSeconds(0.02);
        _springAnimation2.InitialValueExpressions["FinalValue"] = "0";
        loginBody= ElementCompositionPreview.GetElementVisual(LoginBody);
        loginBody.Offset = new System.Numerics.Vector3(-70, 0, 0);
        loginBody.StartAnimation("Offset.X", _springAnimation2);
    }

1 Ответ

1 голос
/ 13 марта 2019

Вы должны переключиться на CompositionScopedBatch и создать поле bool для переключения, если анимация запущена.Затем зарегистрируйтесь для события Completed, чтобы отключить ваше поле.Затем вы можете проверить это поле, чтобы сказать, можете ли вы запустить анимацию.Или вместо этого используйте словарь и сохраните ссылку на анимацию, чтобы можно было остановить ее перед началом новой.

https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositionbatchcompletedeventargs

Пример использования этой функции приведен здесь: Как определить, когда анимация остановлена ​​и свойства обновлены?

...