UWP CompositionObject Animation 导致黑屏
UWP CompositionObject Animation causes black screen
这个方法是通过点击事件触发的,效果很好,只是每次调用这个方法时整个电脑屏幕黑屏(例如第一次可以,第二次黑屏,第三次正常.. .) 有一次点得太频繁windows10提示显示驱动失败,切换到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);
}
如果动画是 运行ning,您应该切换到 CompositionScopedBatch
并创建一个 bool
字段来切换。然后注册 Completed
事件以关闭您的字段。然后你可以检查这个字段说你是否可以 运行 动画。或者改用字典并保留对动画的引用,这样您就可以在开始新动画之前停止它。
https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositionbatchcompletedeventargs
这里有一个如何使用它的例子:
这个方法是通过点击事件触发的,效果很好,只是每次调用这个方法时整个电脑屏幕黑屏(例如第一次可以,第二次黑屏,第三次正常.. .) 有一次点得太频繁windows10提示显示驱动失败,切换到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);
}
如果动画是 运行ning,您应该切换到 CompositionScopedBatch
并创建一个 bool
字段来切换。然后注册 Completed
事件以关闭您的字段。然后你可以检查这个字段说你是否可以 运行 动画。或者改用字典并保留对动画的引用,这样您就可以在开始新动画之前停止它。
https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositionbatchcompletedeventargs
这里有一个如何使用它的例子: