更新情节提要中旋转的速度/持续时间

本文关键字:速度 持续时间 旋转 更新 | 更新日期: 2023-09-27 18:28:47

我正在尝试旋转UserControl(图像)并以编程方式调整旋转速度。

因此,首先,我定义了一个故事板,它旋转一个轮子:

 <Storyboard x:Name="wheelRotation">
            <DoubleAnimation
                x:Name="leftRotation"
                Storyboard.TargetName="leftWheel"
                Storyboard.TargetProperty="(leftWheel.RenderTransform).(RotateTransform.Angle)"
                From="360" To="0" Duration="0:0:2"
                AutoReverse="False"
                RepeatBehavior="Forever">
            </DoubleAnimation>
</Storyboard>

接下来,我尝试以编程方式更新旋转的持续时间,每2秒调整一次"速度":

leftRotation.Duration = speed1;

乍一看,这似乎奏效了,尤其是在速度变化很小的情况下。但如果速度增加,在每次更新时,轮子似乎都会稍微调整角度,从而导致"打嗝"。(如果速度增加,例如在2分钟内从2秒增加到4秒,车轮在最后似乎向前跳了1-2度,如果时间减少,车轮在每次更新时都会向后旋转一点)

我也尝试过使用固定的持续时间来实现这种行为,并更新SpeedRatio,但这也没有帮助,这些调整仍然发生。

我是Silverlight/Windows Phone的新手,所以我对它的内部工作方式没有更深入的了解,如果有人能给我一个如何解决它的提示,我将不胜感激。谢谢。。。

更新情节提要中旋转的速度/持续时间

我不确定在Storyboard/DoubleAnimation运行时更改它们的属性是否是个好主意。我会删除RepeatBehavior="Forever",这样动画就会激发一次,而不是处理Storyboard.Completed事件,以便在每次停止时再次启动动画。然后,您可以在重新开始之前调整持续时间。