首页 > 代码库 > Silverlight动画学习笔记(三):缓动函数
Silverlight动画学习笔记(三):缓动函数
(一)定义:
缓动函数:可以将自定义算术公式应用于动画
(二)为什么要用缓动函数:
您可能希望某一对象逼真地弹回或其行为像弹簧一样。您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效果,但可能需要执行大量的工作,并且与使用算术公式相比动画的精确性将降低。
(三)实例讲解:
1 <UserControl x:Class="AnimationStudy.EasingFunctionAnimation" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 mc:Ignorable="d" 7 d:DesignHeight="300" d:DesignWidth="400"> 8 9 <StackPanel x:Name="LayoutRoot" Background="White">10 <StackPanel.Resources>11 <!--12 缓动函数:13 (1)EasingFunction属性:指定要应用于该动画的缓动函数14 (2)EasingMode属性:更改缓动函数的行为方式(更改动画的内插方式:EaseIn、EaseOut、EaseInOut )15 (3) EasingMode的三种内插方式:16 EaseIn :内插遵循与缓动函数相关联的算术公式。17 EaseOut :内插遵循 100% 内插减去与缓动函数相关联的公式输出。18 EaseInOut :内插将 EaseIn 用于动画的前半部分,将 EaseOut 用于动画的后半部分。19 (4)缓动函数应用范围:20 From/To/By 动画21 关键帧动画22 (5)常见的缓动函数:23 BackEase :在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动。24 BounceEase :创建弹回效果。25 CircleEase :创建使用循环函数加速和/或减速的动画。 26 ElasticEase :创建表示弹簧在停止前来回振荡的动画。 27 SineEase :创建使用正弦公式加速和/或减速的动画。28 ExponentialEase :创建使用指数公式加速和/或减速的动画。 29 【 PowerEase类动画】创建与使用 Power 属性的 CubicEase、QuadraticEase、QuarticEase 和 QuinticEase 的相同的行为30 PowerEase :创建使用公式 f(t) = tp(其中,p 等于 Power 属性)加速和/或减速的动画。31 CubicEase :创建使用公式 f(t) = t3 加速和/或减速的动画。32 QuadraticEase :创建使用公式 f(t) = t2 加速和/或减速的动画。33 QuarticEase :创建使用公式 f(t) = t4 加速和/或减速的动画。34 QuinticEase :创建使用公式 f(t) = t5 加速和/或减速的动画。35 (6)通过从 EasingFunctionBase 继承来创建自己的自定义缓动函数36 覆盖 EaseInCore 方法,针对缓动函数的行为方式添加您自己的数学逻辑,如下代码:37 namespace CustomEasingFunction38 {39 public class CustomSeventhPowerEasingFunction : EasingFunctionBase40 {41 public CustomSeventhPowerEasingFunction() : base() 42 { 43 } 44 protected override double EaseInCore(double normalizedTime) 45 { 46 return Math.Pow(normalizedTime, 7);47 }48 }49 }50 -->51 <Storyboard x:Name="myStoryboard">52 <DoubleAnimationUsingKeyFrames53 Storyboard.TargetProperty="Height"54 Storyboard.TargetName="myRectangle"> 55 <EasingDoubleKeyFrame Value=http://www.mamicode.com/"30" KeyTime="00:00:02">56 <EasingDoubleKeyFrame.EasingFunction>57 <CubicEase EasingMode="EaseOut"/>58 </EasingDoubleKeyFrame.EasingFunction>59 </EasingDoubleKeyFrame>60 61 <EasingDoubleKeyFrame Value=http://www.mamicode.com/"200" KeyTime="00:00:06">62 <EasingDoubleKeyFrame.EasingFunction>63 <BounceEase Bounces="5" EasingMode="EaseOut"/>64 </EasingDoubleKeyFrame.EasingFunction>65 </EasingDoubleKeyFrame>66 </DoubleAnimationUsingKeyFrames>67 </Storyboard>68 </StackPanel.Resources>69 <Rectangle x:Name="myRectangle" MouseLeftButtonDown="Mouse_Clicked" 70 Fill="Blue" Width="200" Height="200" />71 </StackPanel>72 </UserControl>
文章转自:http://www.cnblogs.com/Joetao/articles/2054250.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。