Método fabric.js easyOutElastic()

En la animación y los juegos, se puede ver que muchos objetos se mueven de un punto a otro de forma lineal. Pero después de usar la función Easing, la forma de progresar del objeto puede tomar una forma diferente, natural e interesante.

Las funciones de aceleración son la tasa de cambio de un parámetro a lo largo del tiempo. Son ese tipo de ecuaciones que se mueven lentamente al principio y se aceleran y se ralentizan al final. Estos conjuntos de ecuaciones están tomados del libro y la página web de Robert Penner.

El método easyOutElastic() se utiliza para la relajación elástica.

Sintaxis:

easeOutElastic(t, b, c, d)

Parámetros: Este método acepta cuatro parámetros como se mencionó anteriormente y se describe a continuación:

  • t: este parámetro contiene el tiempo especificado cuando comenzará la animación. Por ejemplo, si el valor de t es 0, significa que la animación acaba de comenzar.
  • b: Este parámetro mantiene la posición inicial especificada del objeto en el eje x. Por ejemplo, si el valor de b es 10, significa que la posición inicial de los objetos en la coordenada x es 10.
  • c: este parámetro contiene el cambio de valor especificado para el objeto. Por ejemplo, si el valor de c es 30, significa que el objeto debe moverse 30 a la derecha, terminando en 40.
  • d: este parámetro contiene la duración especificada de todo el proceso. Por ejemplo, si el valor de d es 2, significa que el objeto tiene 2 segundos para realizar este movimiento de 10 a 40.

Valor devuelto: este método devuelve la posición relajada del objeto, es decir, la posición del objeto en un momento específico.

Ejemplo 1:

HTML

<!DOCTYPE html>
<html>
  
<head>
  <!-- Adding the FabricJS library -->
  <script src=
"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.6.2/fabric.min.js">
  </script>
</head>
  
<body>
    <script type="text/javascript">
  
        // Initializing easeOutElastic() function
        function easeOutElastic (t, b, c, d) {
            var s = 1.70158;
            var p = 0;
            var a = c;
            if (t == 0) return b;
            if ((t /= d) == 1) return b + c;
            if (!p) p = d * .3;
            if (a < Math.abs(c)) {
              a = c;
              var s = p / 4;
            }
            else var s = p / (2 * Math.PI) * Math.asin(c / a);
            return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * 
              (2 * Math.PI) / p) + c + b;
        }
  
        // Calling the easeOutElastic() function over
        // the specified parameter values
        console.log(fabric.util.ease.easeOutElastic(1, 2, 3, 4)); 
    </script>
  
</body>
    
</html>

Producción:

4.734834957055044

Ejemplo 2:

HTML

<!DOCTYPE html>
<html>
  
<head>
  <!-- Adding the FabricJS library -->
  <script src=
"https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.6.2/fabric.min.js">
  </script>
</head>
  
<body>
    <script type="text/javascript">
  
        // Initializing easeOutElastic() function
        function easeOutElastic (t, b, c, d) {
            var s = 1.70158;
            var p = 0;
            var a = c;
            if (t == 0) return b;
            if ((t /= d) == 1) return b + c;
            if (!p) p = d * .3;
            if (a < Math.abs(c)) {
                a = c;
                var s = p / 4;
            }
            else var s = p / (2 * Math.PI) * Math.asin(c / a);
            return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * 
                        (2 * Math.PI) / p) + c + b;
        }
          
        // Initializing the parameters with its values
        var t = 5;
        var b = 10;
        var c = 40;
        var d = 12;
  
        // Calling the easeOutElastic() function over
        // the specified parameter values
        console.log(fabric.util.ease.easeOutElastic(t, b, c, d)); 
    </script>
</body>
  
</html>

Producción:

51.70617003103307

Publicación traducida automáticamente

Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *