WPF中的动画——(三)时间线(TimeLine)
时间线(TimeLine)表⽰时间段。它提供的属性可以让控制该时间段的长度、开始时间、重复次数、该时间段内时间进度的快慢等等。在WPF中内置了如下⼏种TimeLine:
:前⾯已经介绍过,主要⽤于属性的过渡,这种是最常见的动画。
MediaTimeline:⽤于控制媒体⽂件播放的时间线。
ParallelTimeline:是⼀种可对其他时间线进⾏分组的时间线,可⽤于实现较复杂的动画。
:⼀种特殊的,可为其包含的时间线提供对象和属性⽬标信息。在XAML中经常使⽤到它,在后⾯再专项介绍。
TimelineGroup:可包含其他对象的对象的抽象类。
常⽤属性:
Duration:动画播放时间长度
RepeatBehavior:重复⾏为(重复次数)
FillBehavior:动画结束后的⾏为(保持动画的结束状态或恢复到初始状态)
AutoReverse:按相反的顺序重复播放动画
SpeedRatio:动画播放速率(⽤于加速或减速播放)
BeginTime:动画播放的起始时间
时间线控制:
到⽬前为⽌,我们虽然能创建并执⾏动画,但仅仅能通过UIElement. BeginAnimation执⾏开始动画,还⽆法对动画进⾏交互控制。在WPF 中,还提供了⼀系列对时间线的控制操作,如:开始、停⽌、暂停等。它们是通过Clock对象的Controller属性来进⾏的。下⾯就是⼀个简单的⽰例:
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();
从这个代码中可以看出,控制时间线的⼀般步骤如下:
1. 通过CreateClock函数创建时钟对象Clock
2. 通过UIElement. ApplyAnimationClock函数启⽤⽀持时钟控制的动画
3. 使⽤Clock. Controller的⽅法控制动画
更加详尽的例⼦可以参看MSDN⽂档:
html animation属性
除了在Controller中提供了交互⽅法以为,Clock对象还提供了⼀系列属性和事件⽅便我们的获取状态,常见的有:
CurrentProgress 当前进度
CurrentState 当前状态
CurrentTime 当前播放时间
IsPaused 是否处于暂停状态
NaturalDuration 动画持续时间
也提供了⼀系列事件来主动通知状态的变更,常⽤的事件为:
Completed:动画结束时的通知
CurrentGlobalSpeedInvalidated 播放速率变化时的通知,
CurrentStateInvalidated 状态变化时的通知
CurrentTimeInvalidated 播放时间变化时的通知
RemoveRequested 动画移除时候的通知
这⼏个事件在TimeLine对象中也是有的,这样,在不使⽤Clock对象的时候也可以或者这些状态的变化。如果想更加收⼊的理解计时系统的⼯作⽅式,可以看看⼀⽂。
另外,有的特殊的TimeLine对象,如Storyboard本⾝就封装了动画的控制相关内容,可以直接对动画进⾏控制。关于Storyboard需要介绍的内容⽐较多,后⾯再单独写⽂章介绍。
参考资料:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论