所以我一直在玩Visual Studio for Windows Phone 8,并且正在探索与WP8和WPF应用程序相关的XAML标记语言。我阅读了一些关于故事板和动画与关键帧的指南,这让我想到了我的问题。除了使用Storyboard的定时动画之外,还有一种方法可以让它重复一个部分,直到按下一个按钮(点击开始,点击停止)?
<Storyboard x:Key="Storyboard1" x:Name="Testboard">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="image">
<SplineDoubleKeyFrame KeyTime="0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:2" Value="510.72" KeySpline="1,0,1,1" />
<SplineDoubleKeyFrame KeyTime="0:0:5" Value="6000.43"/>
<SplineDoubleKeyFrame KeyTime="0:0:7" Value="9000" KeySpline="0,0,0,1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
我有一个故事板设置,图像是一个小轮盘。动画有3个阶段:
在.cs方面,我有一个按钮连接起来生成一个随机值来替换最后一个Keyframe,以便它每次都停止在不同的插槽上旋转。然后我打电话给故事板开始。
private void btnStartWheel_Click(object sender, RoutedEventArgs e)
{
sb = (Storyboard)this.FindName("Testboard");
((SplineDoubleKeyFrame)((DoubleAnimationUsingKeyFrames)sb.Children[0]).KeyFrames[3]).Value = wheel.getAngle();
sb.Begin();
}
我已经尝试过使用计时器,在刻度线上检查位置在故事板中的位置,如果它接近Keyframe [2]的末尾(KeyTime 0:0:5),它将使用seek()方法并将其移回框架的开头。该方法的问题在于它完全杀死动画并从值0开始,而不是从Keyframe [1]预先旋转。
基本上我希望:
有一种简单的方法吗?