c# - 更新 Storyboard 中旋转的速度/持续时间

标签 c# windows-phone-7 storyboard

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

所以,首先,我定义了一个 Storyboard,它会旋转一个轮子:

 <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 事件以在每次停止时再次启动动画。然后,您可以在重新开始之前调整持续时间。

关于c# - 更新 Storyboard 中旋转的速度/持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829978/

相关文章:

C# 数据库搜索(如何创建查询字符串)

c# - 有没有比将图像保存到流来计算它在磁盘上有多大的不同方法?

c# - 我如何在 .Net 控制台应用程序中获取不记名 token ?

c# - 获取 Office 插件发布版本

c# - DataTemplate 中的 WP7 缩放图像

windows-phone-7 - 如何从 Windows Phone 7 或 8 获取用户自己的手机号码

windows-phone-7 - 带有裁剪功能的Windows Phone 7(WP7)PhotoChooserTask

ios - 如何在 Storyboard中制作一个简单的圆形按钮?

ios - viewDidLoad 中未知的 Storyboard按钮

objective-c - iOS 5 Storyboard和 Nibs