ScalarKeyFrameAnimation的持续时间缩短了

问题描述 投票:0回答:1

enter image description here

[嗨,我尝试使用以下代码创建“ 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]

[嗨,我尝试使用以下代码创建“ ScalarKeyFrameAnimation”,但在第一次尝试时,我只切换了一个开关。动画以“旋转”动画对象的方式开始和停止...

c# xaml animation uwp composition
1个回答
1
投票

您应该添加初始状态的关键帧,没有初始状态就很难定位,而且容易造成混乱。您可以如下更改代码。这意味着旋转会随着时间从0动画到360。

© www.soinside.com 2019 - 2024. All rights reserved.