zoukankan      html  css  js  c++  java
  • WPF与缓动(三) 指数缓动

                                                             WPF与缓动(三) 指数缓动
                                                                                 周银辉

    指数缓动给人的感觉是加速度很大.
    它的原始公式来自:P(t) = Math.Pow(2,   10*(t-1));
    与其他缓动一样,我在这里就直接给出其核心代码了:
     //指数缓动
            protected override double GetCurrentValueCore(double defaultOriginValue, double defaultDestinationValue, AnimationClock animationClock)
            
    {
                
    double from = (this.From==null?defaultDestinationValue:(double)this.From);
                
    double to = (this.To==null?defaultOriginValue:(double)this.To);
                
    double delta = to - from;
                
    double value = animationClock.CurrentProgress.Value;


                
    //加速
                
    //return delta * Math.Pow(2, 10 * (value - 1)) + from;

                
    //减速
                
    //return delta * (-Math.Pow(2, -10 * value) + 1) + from;

                
    //先加速,后减速
                double t = value * this.Duration.TimeSpan.Ticks;
                
    double d = this.Duration.TimeSpan.Ticks;
                
    if ((t/=(d/2)) < 1)
                
    {
                   
    return  delta / 2 * Math.Pow(210 * (t - 1)) + from;
                }

                
    return delta / 2 * (-Math.Pow(2-10 * --t) + 2+ from;
                
            }

    点击这里下载源代码

  • 相关阅读:
    项目中用到的ext及js细节
    《软件调试艺术》读后感六
    同步数据
    数组首地址取地址
    Storm简述及集群安装
    html5之canvas画图 1.写字板功能
    Memcached安装与配置
    WIP完工入库及完工退回的几个重要问题
    赵雅智:service_bindService生命周期
    【Android开发经验】Cannot generate texture from bitmap异常的解决方式
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/758897.html
Copyright © 2011-2022 走看看