导航

如何使用代码动态的控制StoryBoard TimeLine

Posted on 2009-10-02 21:15  passporter  阅读(893)  评论(0)    收藏  举报

如何使用代码动态的控制StoryBoard TimeLine是一个比较常见的问题。可以使用如下的方法:

XAML中新建两个动画,本例是控制ScaleTransformXY,共两个动画:
<Storyboard x:Name="onSizeChanged_sb">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00.3" Storyboard.TargetName="centerBallCanvas" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<SplineDoubleKeyFrame x:Name="fadeInBallX" KeyTime="00:00:00.4000000" Value="1" KeySpline="0,0.797,0.987,1"/>
</DoubleAnimationUsingKeyFrames>

<DoubleAnimationUsingKeyFrames BeginTime="00:00:00.3" Storyboard.TargetName="centerBallCanvas" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
<SplineDoubleKeyFrame x:Name="fadeInBallY" KeyTime="00:00:00.4000000" Value="1" KeySpline="0,0.502,0.987,1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>

注意红色文字是手动加上的,用于找到这两个关键帧,后面代码会用到。

相应的CS文件:

//修改相关参数后播放Storyboard
fadeInBallX.Value = 0.5;
fadeInBallY.Value = 0.5;
onSizeChanged_sb.Begin();


这样就可以根据代码中的值动态的控制动画效果了,对其它的UIElement.OpacitySolidColorBrush.Color等属性的动画也都适用,非常方便。

转自:http://silverlight.cn/blogs/patrickwj/archive/2007/10/17/safsaf.aspx