天天看點

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);

繼續閱讀