前面在讨论关键帧动画的时候,我有意把几个带缓动动画的关键帧动画忽略掉,如EasingColorKeyFrame、EasingDoubleKeyFrame和EasingPointKeyFrame,其实为数不多,就这么几个。因为我希统一放到这节课程来吹一下缓动函数。
所谓缓动函数,就是我们在代数里面说的函数,说白了嘛,就是根特定的函数规则,用输入的值算出最终值,使得动画在两个关键帧之间不再是均衡过度,而是带有加/减速或其他效果,当然,还要取决于算法。
比如函数
所以,我们看出来了,缓动函数涉及复杂的数学运算,不过,灰常幸运的是,常用的缓函数MS已经为我们封装好了,这也是从WPF/Silverlight中迁移到WP的,集成性兼容性MD的好,所以,在使用的时候,大家可以轻松一大把了,因此,当你在练习的时候,记得冲一杯咖啡放在桌上,一边写代码一边品尝吧。呵呵,编程快乐,快乐编程。
如果你干过WPF或SL,这些东西你会觉得灰常Easy,我不是第一次强调了,所以说,基础很重要,把基础扎实了,无论你学习什么新玩意儿,都可以一通百通的,不管你信不信,反正我信了。
如何你对缓动函数没有一个直观的认识也不要紧,下面推荐大家一个游戏,很好玩的,不玩你学WP会后悔的。游戏地址:http://samples.msdn.microsoft.com/Silverlight/silverlight_next/Animations/easing_functions_gallery/testpage.html
记住要认真玩,这样你才会熟悉缓动函数与相关的类。
某致理名言说得好,“自己动手,丰衣足食”,还是老规矩,实例决定一切,动手干活吧。
演练一、请参考以下XAML代码构建你的UI。
<Grid Loaded="gridLoaded">
<Ellipse HorizontalAlignment="Left"
VerticalAlignment="Top"
Fill="Orange"
Width="100"
Height="100"
x:Name="elp">
<Ellipse.RenderTransform>
<TranslateTransform x:Name="trm"/>
</Ellipse.RenderTransform>
</Ellipse>
<Grid.Resources>
<Storyboard x:Name="std">
<DoubleAnimationUsingKeyFrames Duration="0:0:8"
Storyboard.TargetName="trm"
Storyboard.TargetProperty="Y"
RepeatBehavior="30">
<LinearDoubleKeyFrame KeyT