Привет, я пытаюсь создать «ScalarKeyFrameAnimation» со следующим кодом, с первой попытки, когда я только включаю-выключаю один. Анимация запускается и останавливается как способ конфигурации объекта анимации 'вращения', но затем, при попытке несколько раз, я замечаю, что Visual вращается все медленнее и медленнее, затем останавливается. Как и в GIF
, я перенес создание анимации вращения на событие Page_Loaded. Чтобы его можно было создать только один раз. Но тогда ничего не изменится
private Compositor compositor = Window.Current.Compositor;
private Visual backvisual;
private void Page_Loaded(object sender, RoutedEventArgs e)
{
backvisual = ElementCompositionPreview.GetElementVisual(FanIcon);
backvisual.Size = new Vector2(100, 100);
backvisual.CenterPoint = new Vector3(backvisual.Size / 2, 0);
rotate = compositor.CreateScalarKeyFrameAnimation();
rotate.InsertKeyFrame(1f, 360, compositor.CreateLinearEasingFunction());
rotate.Duration = TimeSpan.FromMilliseconds(1000);
rotate.IterationBehavior = AnimationIterationBehavior.Forever;
}
private void ToggleFanSec1_Toggled(object sender, RoutedEventArgs e)
{
if (ToggleFanSec1.IsOn == true)
{
backvisual.StartAnimation(nameof(Visual.RotationAngleInDegrees), rotate);
}
else
{
backvisual.StopAnimation(nameof(Visual.RotationAngleInDegrees));
}
}[![enter image description here][1]][1]