更新故事板中旋转的速度/持续时间

时间:2012-03-22 20:28:00

标签: c# windows-phone-7 storyboard

我正在尝试旋转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>

接下来,我试图以编程方式更新旋转持续时间,调整&#34;速度&#34;每2秒钟:

leftRotation.Duration = speed1;
乍一看,这似乎有效,特别是如果速度的变化很小。但是如果速度增加,那么在每次更新时,车轮似乎都会稍微调整一下角度,导致打嗝&#34;打嗝。 (如果速度增加,例如在2分钟内从2s增加到4s,那么车轮似乎在最后向前跳1-2度,如果它在时间上减少,则每次更新时车轮都会向后旋转一点)< / p>

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

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

1 个答案:

答案 0 :(得分:0)

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