WPF中的動畫——(三)時間線(TimeLine)(轉) WPF中的動畫——(三)時間線(TimeLine)

時間線(TimeLine)表示時間段。 它提供的屬性可讓控制該時間段的長度、開始時間、重複次數、該時間段內時間進度的快慢等等。在WPF中內置了以下幾種TimeLine:html

  • AnimationTimeline :前面已經介紹過,主要用於屬性的過渡,這種是最多見的動畫。
  • MediaTimeline:用於控制媒體文件播放的時間線。
  • ParallelTimeline: ParallelTimeline 是一種可對其餘時間線進行分組的時間線,可用於實現較複雜的動畫。
  • Storyboard :一種特殊的  ParallelTimeline,可爲其包含的時間線提供對象和屬性目標信息。在XAML中常常使用到它,在後面再專項介紹。
  • TimelineGroup:可包含其餘  Timeline 對象的  Timeline 對象的抽象類。

 

經常使用屬性:windows

  • Duration: 動畫播放時間長度
  • RepeatBehavior: 重複行爲(重複次數)
  • FillBehavior: 動畫結束後的行爲(保持動畫的結束狀態或恢復到初始狀態)
  • AutoReverse: 按相反的順序重複播放動畫
  • SpeedRatio: 動畫播放速率(用於加速或減速播放)
  • BeginTime: 動畫播放的起始時間

 

時間線控制:函數

到目前爲止,咱們雖然能建立並執行動畫,但僅僅能經過UIElement. BeginAnimation執行開始動畫,還沒法對動畫進行交互控制。在WPF中,還提供了一系列對時間線的控制操做,如:開始、中止、暫停等。它們是經過Clock對象的Controller屬性來進行的。下面就是一個簡單的示例:post

    var widthAnimation = new DoubleAnimation()
    {
        From = 0,
        To = 320,
        Duration = TimeSpan.FromSeconds(5),
    };

    var clock = widthAnimation.CreateClock();
    button.ApplyAnimationClock(WidthProperty, clock);

    await Task.Delay(3000);
    clock.Controller.Pause();動畫

從這個代碼中能夠看出,控制時間線的通常步驟以下:url

  1. 經過CreateClock函數建立時鐘對象Clock
  2. 經過UIElement. ApplyAnimationClock函數啓用支持時鐘控制的動畫
  3. 使用Clock. Controller的方法控制動畫

更加詳盡的例子能夠參看MSDN文檔:以交互方式控制時鐘htm

除了在Controller中提供了交互方法覺得,Clock對象還提供了一系列屬性和事件方便咱們的獲取狀態,常見的有:對象

  • CurrentProgress    當前進度
  • CurrentState    當前狀態
  • CurrentTime    當前播放時間
  • IsPaused    是否處於暫停狀態
  • NaturalDuration    動畫持續時間

也提供了一系列事件來主動通知狀態的變動,經常使用的事件爲:blog

  • Completed:動畫結束時的通知
  • CurrentGlobalSpeedInvalidated 播放速率變化時的通知,
  • CurrentStateInvalidated 狀態變化時的通知
  • CurrentTimeInvalidated 播放時間變化時的通知
  • RemoveRequested 動畫移除時候的通知

這幾個事件在TimeLine對象中也是有的,這樣,在不使用Clock對象的時候也能夠或者這些狀態的變化。 若是想更加收入的理解計時系統的工做方式,能夠看看動畫和計時系統概述一文。事件

另外,有的特殊的TimeLine對象,如Storyboard自己就封裝了動畫的控制相關內容,能夠直接對動畫進行控制。關於Storyboard須要介紹的內容比較多,後面再單獨寫文章介紹。

 

參考資料:

 
分類:  WPF
相關文章
相關標籤/搜索