缓动函数easeInout

  1. easeIn函数
        function easeInQuad(curtime,begin,end,duration){
            let x = curtime/duration; //x值
            let y = x*x; //y值
            return begin+(end-begin)*y; //套入最初的公式
        }

参数: curtime 当前时间,,begin 开始的位置,,end 结束的位置,,duration 动画经过的总时长
1目标:构建平面直角坐标系,x轴表示时间,y轴表示位移,构建一条随x变大,y也变大,k=y/x也随之变大的非线性函数
2 已知x轴的变化域为[0,duration],0<curtime<duration,duration为常数不会变,所以不等式同除duration得,0<curtime/duration<1,因此x轴从时间变为当前时间与总时间的比
3 已知y轴的值域为[0,end-begin],0<end-begin,begin和end均为常数,不等式两边同除end-begin得,0<1,y值从位移变成当前位移与总位移之间的比值
4函数输出结果为当前运动位置,curposition = begin + 当前位移, 当前位移 = 总位移*y (y值是当前位移与总位移之间的比值) = (end-begin)*y
5 y=x × \times ×x函数符合随着x值的增大y和k也随着增大,且当x的变化域为[0,1]时,y的值域为[0,1],函数符合目标
6 用平方根构建的缓慢加速运动 核心函数:x × \times ×x

  1. easeOut函数
        function easeOutQuad(curtime,begin,end,duration){
            let x = curtime/duration;         //x值
            let y = -x*x + 2*x;  //y值
            return begin+(end-begin)*y;        //套入最初的公式
        }

easeOut的分析与easeIn同理,是一个用平方根构建的缓慢减速运动 核心函数:x × \times ×x + 2 × \times ×x

  1. easeInout函数
        function easeInoutQuad(curtime,begin,end,duration){
            if(curtime<duration/2){ //前半段时间
                return easeInQuad(curtime,begin,(begin+end)/2,duration/2);//改变量和时间都除以2
            }else{
                let curtime1 = curtime-duration/2; //注意时间要减去前半段时间
                let begin1 = (begin+end)/2;//初始量要加上前半段已经完成的
                return easeOutQuad(curtime1,begin1,end,duration/2);//改变量和时间都除以2
            }
        }

easeInout函数由easeIn和easeOut组合成,时间前半段是easeIn,后半段是easeOut,关键点在于如何处理后半段easeOut的相关参数

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值