標籤:style http io color os ar 使用 sp strong
時間軸(TimeLine)表示時間段。 它提供的屬性可以讓控制該時間段的長度、開始時間、重複次數、該時間段內時間進度的快慢等等。在WPF中內建了如下幾種TimeLine:
- AnimationTimeline?:前面已經介紹過,主要用於屬性的過渡,這種是最常見的動畫。
- MediaTimeline:用於控制媒體檔案播放的時間軸。
- ParallelTimeline:ParallelTimeline?是一種可對其他時間軸進行分組的時間軸,可用於實現較複雜的動畫。
- Storyboard?:一種特殊的?ParallelTimeline,可為其包含的時間軸提供對象和屬性目標資訊。在XAML中經常使用到它,在後面再專項介紹。
- TimelineGroup:可包含其他?Timeline?對象的?Timeline?對象的抽象類別。
?
常用屬性:
- Duration: 動畫播放時間長度
- RepeatBehavior: 重複行為(重複次數)
- FillBehavior: 動畫結束後的行為(保持動畫的結束狀態或恢複到初始狀態)
- AutoReverse: 按相反的順序重複播放動畫
- SpeedRatio: 動畫播放速率(用於加速或減速播放)
- BeginTime: 動畫播放的起始時間
?
時間軸控制:
到目前為止,我們雖然能建立並執行動畫,但僅僅能通過UIElement. BeginAnimation執行開始動畫,還無法對動畫進行互動控制。在WPF中,還提供了一系列對時間軸的控制操作,如:開始、停止、暫停等。它們是通過Clock對象的Controller屬性來進行的。下面就是一個簡單的樣本:
????var widthAnimation = newDoubleAnimation()
????{
????????From = 0,
????????To = 320,
????????Duration = TimeSpan.FromSeconds(5),
????};
????var clock = widthAnimation.CreateClock();
????button.ApplyAnimationClock(WidthProperty, clock);
????awaitTask.Delay(3000);
????clock.Controller.Pause();
從這個代碼中可以看出,控制時間軸的一般步驟如下:
- 通過CreateClock函數建立時鐘對象Clock
- 通過UIElement. ApplyAnimationClock函數啟用支援時鐘控制的動畫
- 使用Clock. Controller的方法控制動畫
更加詳盡的例子可以參看MSDN文檔:以互動方式控制時鐘
除了在Controller中提供了互動方法以為,Clock對象還提供了一系列屬性和事件方便我們的擷取狀態,常見的有:
- CurrentProgress????當前進度
- CurrentState????目前狀態
- CurrentTime????當前播放時間
- IsPaused????是否處於暫停狀態
- NaturalDuration????動畫期間
也提供了一系列事件來主動通知狀態的變更,常用的事件為:
- Completed:動畫結束時的通知
- CurrentGlobalSpeedInvalidated 播放速率變化時的通知,
- CurrentStateInvalidated 狀態變化時的通知
- CurrentTimeInvalidated 播放時間變化時的通知
- RemoveRequested 動畫移除時候的通知
這幾個事件在TimeLine對象中也是有的,這樣,在不使用Clock對象的時候也可以或者這些狀態的變化。 如果想更加收入的理解計時系統的工作方式,可以看看動畫和計時系統概述一文。
另外,有的特殊的TimeLine對象,如Storyboard本身就封裝了動畫的控制相關內容,可以直接對動畫進行控制。關於Storyboard需要介紹的內容比較多,後面再單獨寫文章介紹。
?
參考資料:
- 計時行為概述
- 計時事件概述
- Timeline 類
- Clock 類
- 同步定位時鐘
WPF中的動畫——(三)時間軸(TimeLine)