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 CustomEasingFunction
38                 {
39                     public class CustomSeventhPowerEasingFunction : EasingFunctionBase
40                     {
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                 <DoubleAnimationUsingKeyFrames
53              Storyboard.TargetProperty="Height"
54              Storyboard.TargetName="myRectangle">
55                     <EasingDoubleKeyFrame Value="30" KeyTime="00:00:02">
56                         <EasingDoubleKeyFrame.EasingFunction>
57                             <CubicEase EasingMode="EaseOut"/>
58                         </EasingDoubleKeyFrame.EasingFunction>
59                     </EasingDoubleKeyFrame>
60
61                     <EasingDoubleKeyFrame Value="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

Silverlight动画学习笔记(三):缓动函数

时间: 2024-10-27 02:52:46

Silverlight动画学习笔记(三):缓动函数的相关文章

WPF中的动画——(四)缓动函数

缓动函数可以通过一系列公式模拟一些物理效果,如实地弹跳或其行为如同在弹簧上一样.它们一般应用在From/To/By动画上,可以使得其动画更加平滑. ????var widthAnimation = new DoubleAnimation()????{????????From = 0,????????To = 320,????????Duration = TimeSpan.FromSeconds(1),????????EasingFunction = new BackEase()????????{

WPF中的动画——(四)缓动函数(转)

WPF中的动画——(四)缓动函数 缓动函数可以通过一系列公式模拟一些物理效果,如实地弹跳或其行为如同在弹簧上一样.它们一般应用在From/To/By动画上,可以使得其动画更加平滑. var widthAnimation = new DoubleAnimation()    {        From = 0,        To = 320,        Duration = TimeSpan.FromSeconds(1),        EasingFunction = new BackEa

MySQL学习笔记(三):常用函数

一:字符串函数 需要注意的几个细节: 1.cancat中有一个字符串为null,则结果为null. 2.left(str,x) 和 right(str,x)中x为null,则不返回任何字符串,不是null. 二:数值函数 注意的几个细节: 1.truncate(x,y) 和 round(x,y) 都能截断,只是round会四舍五入,而truncate不会. 三:日期和时间函数 四:流程函数 五:其他函数

支持xcode6的缓动函数Easing以及使用示例

用xcode6新建工程后,直接导致不支持之前的Easing缓动函数的代码,经过修改后就可以正常使用了,虽然比不上POP高大上的动画,但用缓动函数的动画还是能够实现很复杂的效果的. 注:Easing缓动函数服务于关键帧动画,理解这一点很重要,需要你对CoreAnimation有着很深入的了解才能够用得得心应手 提供源码如下: Easing.h 与 Easing.m // // Easing.h // Easing // // Created by YouXianMing on 14-10-10.

用缓动函数模拟物理动画

1.缓动函数简介      <1>缓动函数的动画效果是建立在CALayer层级的关键帧动画基础之上 也就是说用普通的UIView的Animation是无法直接实现缓动函数 <2>缓动函数是一系列模拟物理效果(如抛物线)方程式的统称,用以计算给定两点之间的插值 <3>两点之间插的值越多,效果越好,但是会耗费更多的性能 <4>只有理解了缓动函数的原理才有可能写出自己想要的效果 学习来自:<极客学院>之 "用缓动函数模拟物理动画"

JS动画之缓动函数分析及动画库

上一篇讲了JS动画定时器相关知识,这一篇介绍下缓动函数及流行的动画库. 熟悉的图 实际使用 jquery animate()+jquery.easing插件的使用: $(selector).animate(styles,speed,easing,callback) 原生js使用:张鑫旭同学的文章 缓动函数知识 什么是缓动函数?我的理解是动画参数与数学公式结合的函数. 各流行库缓动函数对比,以easeInQuad为例,如图: Tween.js jQuery.easing GSAP CreateJS

缓动函数与关键帧动画

缓动函数与关键帧动画 缓动函数指定动画效果在执行时的速度,使其看起来更加真实. 现实物体照着一定节奏移动,并不是一开始就移动很快的.当我们打开抽屉时,首先会让它加速,然后慢下来.当某个东西往下掉时,首先是越掉越快,撞到地上后回弹,最终才又碰触地板. http://easings.net/zh-cn 缓动函数能让动画效果看起来更加真实:). iOS开发中,能用到缓动函数的地方就属于关键帧动画了,以下是我用关键帧动画做出来的模拟真实时钟效果的动画,效果相当逼真哦,只是这个gif图片的效果不好而已.

iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果

先说下基本动画部分 基本动画部分比较简单, 但能实现的动画效果也很局限 使用方法大致为: #1. 创建原始UI或者画面 #2. 创建CABasicAnimation实例, 并设置keypart/duration/fromValue/toValue #3. 设置动画最终停留的位置 #4. 将配置好的动画添加到layer层中 举个例子, 比如实现一个圆形从上往下移动, 上代码: 1 //设置原始画面 2 UIView *showView = [[UIView alloc] initWithFrame

Ajax学习笔记(三)

三.jQuery库详解 1.使用jQuery之后,javascript操作的不再是HTML元素对应的DOM对象,而是包装DOM对象的jQuery对象.js通过调用jQuery对象的方法来改变它所包装的DOM对象的属性,从而实现动态更新HTML页面. 由此可见,使用jQuery动态更新HTML页面只需以下两个步骤: (1)获取jQuery对象.jQuery对象通常是DOM对象的包装 (2)调用jQuery对象的方法来改变自身.当jQuery对象被改变时,jQuery包装的DOM对象随之改变,HTM