天天看点

silverlight精要--动画效果

先制作一个Story,并且设定对象:

后台代码分析:

1、有关动画属性参数的设置代码 :

//设置动画是否回卷操作

            leftEllipseStory.AutoReverse = true;

//设置动画将要开始的时间,在此可设置其延迟开始的时间

            leftEllipseStory.BeginTime = System.TimeSpan.FromSeconds(1);

//当动画到达其活动时间的结束时点时将如何动作 

            leftEllipseStory.FillBehavior = FillBehavior.Stop;

//修改RepeatBehavior属性方法示例

#region  RepeatBehavior示例一

//leftEllipseStory.RepeatBehavior =RepeatBehavior.Forever;  //设置重复动画的次数

// 一个迭代 Count,指定时间线将要播放的次数;

// 一个 TimeSpan 值,指定此时间线活动周期的总长度;

// 或者特殊值 Forever,指定时间线应该无限重复。

//默认值是 RepeatBehavior 的 Count 为 1,该值指示时间线播放一次。

#endregion

#region RepeatBehavior示例二

              RepeatBehavior rbc = new RepeatBehavior(6);

            leftEllipseStory.RepeatBehavior = rbc;

#endregion

//Duration表示 Timeline 处于活动状态的持续时间

            Duration dr = new Duration(TimeSpan.FromMilliseconds(500)); 

            leftEllipseStory.Duration = dr;

//指定此时间线的时间相对于其父级速度的前进速率,越大越快

            leftEllipseStory.SpeedRatio = 7; //一个大于 0 的有限值,指定此时间线的时间相对于其父级速度的前进速率。

//如果此时间线为根时间线,则此属性指定默认时间线速度。该值用因子表示,

//其中 1 表示正常速度,2 表示双倍速度,0.5 为半速,依此类推。

2、有关动画控制的代码

  leftEllipseStory.Begin();

leftEllipseStory.Pause();

leftEllipseStory.Resume();

leftEllipseStory.Stop();

3、有关指派动画给指定控件的代码,共有三种方式来达到此目的

#region 方法一

this.leftEllipseStory.SetValue(Storyboard.TargetNameProperty, "ellipseRight"); //通过代码动态设定TargetNameProperty值,从而把某个动画指定给某个控件

#endregion

#region  方法二

            Storyboard.SetTargetName(leftEllipseStory, "ellipseRight");  //把对象的名称传递给leftEllipseStory

#endregion

#region 方法三

            Storyboard.SetTarget(leftEllipseStory, ellipseRight);  //把对象传递给leftEllipseStory

#endregion

4、有关动态创建动画并进行指派的代码

            Storyboard newstb = new Storyboard();

            Storyboard.SetTarget(newstb, ellipseRight);  //注意:在此处不能用 Storyboard.SetTargetName(newstb, "ellipseRight")方法

              DoubleAnimation newDbAnim = new DoubleAnimation();

            newDbAnim.From = 1.00;

            newDbAnim.To = 0.0;

            Storyboard.SetTargetProperty(newDbAnim, new PropertyPath("(UIElement.Opacity)"));

            newstb.Children.Add(newDbAnim);

继续阅读