WPF中的动画——(三)时间线(TimeLine)

时间线(TimeLine)表示时间段。 它提供的属性可让控制该时间段的长度、开始时间、重复次数、该时间段内时间进度的快慢等等。在WPF中内置了以下几种TimeLine:windows

  • AnimationTimeline  :前面已经介绍过,主要用于属性的过渡,这种是最多见的动画。
  • MediaTimeline:用于控制媒体文件播放的时间线。
  • ParallelTimeline:ParallelTimeline 是一种可对其余时间线进行分组的时间线,可用于实现较复杂的动画。
  • Storyboard  :一种特殊的 ParallelTimeline,可为其包含的时间线提供对象和属性目标信息。在XAML中常常使用到它,在后面再专项介绍。
  • TimelineGroup:可包含其余 Timeline 对象的 Timeline 对象的抽象类。

 

经常使用属性: 函数

  • Duration: 动画播放时间长度
  • RepeatBehavior: 重复行为(重复次数)
  • FillBehavior: 动画结束后的行为(保持动画的结束状态或恢复到初始状态)
  • AutoReverse: 按相反的顺序重复播放动画
  • SpeedRatio: 动画播放速率(用于加速或减速播放)
  • BeginTime: 动画播放的起始时间

 

时间线控制: 动画

到目前为止,咱们虽然能建立并执行动画,但仅仅能经过UIElement. BeginAnimation执行开始动画,还没法对动画进行交互控制。在WPF中,还提供了一系列对时间线的控制操做,如:开始、中止、暂停等。它们是经过Clock对象的Controller属性来进行的。下面就是一个简单的示例:spa

    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文档:以交互方式控制时钟 文档

除了在Controller中提供了交互方法觉得,Clock对象还提供了一系列属性和事件方便咱们的获取状态,常见的有: get

  • CurrentProgress    当前进度
  • CurrentState    当前状态
  • CurrentTime    当前播放时间
  • IsPaused    是否处于暂停状态
  • NaturalDuration    动画持续时间

也提供了一系列事件来主动通知状态的变动,经常使用的事件为: animation

  • Completed:动画结束时的通知
  • CurrentGlobalSpeedInvalidated 播放速率变化时的通知,
  • CurrentStateInvalidated 状态变化时的通知
  • CurrentTimeInvalidated 播放时间变化时的通知
  • RemoveRequested 动画移除时候的通知

这几个事件在TimeLine对象中也是有的,这样,在不使用Clock对象的时候也能够或者这些状态的变化。 若是想更加收入的理解计时系统的工做方式,能够看看动画和计时系统概述一文。 同步

另外,有的特殊的TimeLine对象,如Storyboard自己就封装了动画的控制相关内容,能够直接对动画进行控制。关于Storyboard须要介绍的内容比较多,后面再单独写文章介绍。

 

参考资料:

相关文章
相关标签/搜索