动画的生命周期
从技术的角度看,WPF动画只是暂时的,这意味着它们不能真正改变基本属性的 值,当动画处于活动状态时,只是覆盖了属性的值 。
单向动画,在动画运行结束后会保持处于活动状态,这是因为动画需要将按钮的宽度保 持为新值,这会导致如下常见问题,如果尝试使用代码在动画完成后修改属性值,代码 将不会起作用,因为代码只是为属性指定了一个新的本地值,但仍会先试用动画之后的 属性值。
为了解决动画完成后能修改属性的值,有以下方法可解决。
(1)、设置AutoReverse属性,如果将该属性设置为true,将会反向运动,返回原始的 值(不适合动画完成后,再为属性设置最后的值,只是还原为动画之前的值)。
(2)、改变FillBehavior属性。通常,FillBehavior属性设置为HoldEnd,这意味着当 动画结束时,会继续为目标元素应用最后的值。如果将FillBehavior属性改为Stop,只要 动画结束,属性就会恢复为原来的值(适用于动画结束后,再次为其设置新值,一般不与 AutoReverse配合着使用,这两个用其中一个就行了)。
TimeLine类
TimeLine类的常用属性。
5.1)、AccelerationRatio和DeceleRation属性。
可以通过AcclerationRation和DecelerationRation属性压缩部分时间轴,使动画运行的 更快,并将拉伸其他时间进行补偿,使总时间保持不变。这两个属性都表示百分比值, 例如,将AcceleRation属性设置为0.3,表示希望使用动画持续时间中前30%的时间进行 加速。例如在1个10秒的动画中,前3秒会加速运行,而剩余的7秒会以恒定不变的速度 运行,如果将DeceleRation属性设置为0.3,那么最后3秒回减速运行。
5.2)、RepeatBehavior属性
使用RepeataBehavior属性可以控制如何重复运行动画,如果希望重复固定次数,应为 RepeatBehavior构造函数传递合适的次数。
还可设置RepeatBehavior为永久重复。