UWP CompositionObject动画导致黑屏

时间:2019-03-13 15:20:51

标签: c# xaml uwp uwp-xaml

此方法是由click事件触发的,效果很好,但每隔一次调用此方法就会使整个计算机屏幕变黑(例如,第一次无效,第二次熄灭,第三次正常...)一次我太频繁地单击它,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 个答案:

答案 0 :(得分:1)

您应该切换到CompositionScopedBatch并创建一个bool字段来切换动画是否正在运行。然后注册Completed事件以关闭您的字段。然后,您可以检查此字段以说出是否可以运行动画。或改用字典并保留对动画的引用,以便您可以在开始新动画之前停止动画。

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

如何使用它的示例在这里: How to I detect when an animation is stopped and properties updated?