返回介绍

缓动原理与实现

发布于 2024-06-02 22:07:04 字数 3957 浏览 0 评论 0 收藏 0

动画就是以一定的频率去改变元素的属性,使之运动起来,最普通的动画就是匀速的动画,每次增加固定的值。缓动就是用来修改每次增加的值,让其按照不规律的方式增加,实现动画的变化。

程序实现缓动

没有加速度的线性运动

数学公式为:f(x)=x, 代码如下:

AnimationTimer.makeLinear = function () {
   return function (percentComplete) {
      return percentComplete;
   };
};

逐渐加速的缓入运动

数学公式为:f(x)=x^2, 代码如下:

AnimationTimer.makeEaseIn = function (strength) {
   return function (percentComplete) {
      return Math.pow(percentComplete, strength*2);
   };
};

逐渐减速的缓出运动

数学公式为:f(x)=1-(1-x)^2, 代码如下:

AnimationTimer.makeEaseOut = function (strength) {
   return function (percentComplete) {
      return 1 - Math.pow(1 - percentComplete, strength*2);
   };
};

缓入缓出运动

数学公式为:f(x)=x-sin(x*2π)/(2π), 代码如下:

AnimationTimer.makeEaseInOut = function () {
   return function (percentComplete) {
      return percentComplete - Math.sin(percentComplete*2*Math.PI) / (2*Math.PI);
   };
};

弹簧运动

数学公式为:f(x)=(1-cos(x*Npasses * π) * (1-π))+x, Npassed表示运动物体穿越中轴的次数。 代码如下:

AnimationTimer.makeElastic = function (passes) {
   passes = passes || 3;
   return function (percentComplete) {
       return ((1-Math.cos(percentComplete * Math.PI * passes)) *
               (1 - percentComplete)) + percentComplete;
   };
};

## 弹跳运动
Nbounces表示运动物体被弹起的总次数,弹起的次数为偶数的时候,数学公式为:

f(x)=(1=cos(x Nbounces π) * (1-π))+x


弹起的次数为奇数的时候,数学公式为:

f(x)=2-(((1-cos(x π Nbounces)) * (1-x)+x)


代码如下:

AnimationTimer.makeBounce = function (bounces) { var fn = AnimationTimer.makeElastic(bounces); return function (percentComplete) { percentComplete = fn(percentComplete); return percentComplete <= 1 ? percentComplete : 2-percentComplete; }; }; ```

参考资料

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文