Scratch Modules Gallery

Tweening

Use tweening/interpolation for smooth animation.

animationtween

Contributors: LuYifei2011

Scripts

Linear

define linear from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Sine

define sine ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((1) - ([cos v] of ((Tween) * (90))))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define sine ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ([sin v] of ((Tween) * (90)))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define sine ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to (() - ((([cos v] of ((Tween) * (180))) - (1)) / (2)))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Power

// You can change exponent: square / cubic / quartic / quintic

define power-in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((Tween) * (Tween)) // cubic: multiply again; quartic/quintic: and so on
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define power-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((1) - (Tween))
set [Tween v] to ((Tween) * (Tween)) // cubic: multiply again
set [Tween v] to ((1) - (Tween))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define power-in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) < (0.5)> then
  set [Tween v] to ((2) * (Tween))
  set [Tween v] to ((Tween) * (Tween)) // cubic: multiply again
  set [Tween v] to ((Tween) / (2))
else
  set [Tween v] to (((-2) * (Tween)) + (2))
  set [Tween v] to ((Tween) * (Tween)) // cubic: multiply again
  set [Tween v] to ((1) - ((Tween) / (2)))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Exponential

Imported Module Exponentiation · Main (#1)
define (a :: custom-arg) ^ (b :: custom-arg)
set [result v] to ([e ^ v] of ((b :: custom-arg) * ([ln v] of (a :: custom-arg))))
define expo ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (0)> then
  set [Tween v] to (0)
else
  (2) ^ (((10) * (Tween)) - (10)) :: custom
  set [Tween v] to (result)
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define expo ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (1)> then
  set [Tween v] to (1)
else
  (2) ^ ((-10) * (Tween)) :: custom
  set [Tween v] to ((1) - (result))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define expo ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (0)> then
  set [Tween v] to (0)
else
  if <(Tween) = (1)> then
    set [Tween v] to (1)
  else
    if <(Tween) < (0.5)> then
      (2) ^ (((20) * (Tween)) - (10)) :: custom
      set [Tween v] to ((result) / (2))
    else
      (2) ^ (((-20) * (Tween)) + (10)) :: custom
      set [Tween v] to (((2) - (result)) / (2))
    end
  end
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Circular

define circular ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((1) - ([sqrt v] of ((1) - ((Tween) * (Tween)))))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define circular ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ([sqrt v] of ((1) - (((Tween) - (1)) * ((Tween) - (1)))))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define circular ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) < (0.5)> then
  set [Tween v] to ((2) * (Tween))
  set [Tween v] to ((1) - ([sqrt v] of ((1) - ((Tween) * (Tween)))))
  set [Tween v] to ((Tween) / (2))
else
  set [Tween v] to (((-2) * (Tween)) + (2))
  set [Tween v] to ([sqrt v] of ((1) - ((Tween) * (Tween))))
  set [Tween v] to (((Tween) + (1)) / (2))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Back

define back ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to (((Tween) * (Tween)) * (((2.70158) * (Tween)) - (1.70158)))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define back ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((Tween) - (1))
set [Tween v] to ((((Tween) * (Tween)) * (((2.70158) * (Tween)) + (1.70158))) + (1))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define back ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) < (0.5)> then
  set [Tween v] to ((Tween) * (2))
  set [Tween v] to ((((Tween) * (Tween)) * (((3.5949095) * (Tween)) - (2.5949095))) / (2))
else
  set [Tween v] to (((Tween) * (2)) - (2))
  set [Tween v] to (((((Tween) * (Tween)) * (((3.5949095) * (Tween)) + (2.5949095))) + (2)) / (2))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Elastic

Imported Module Exponentiation · Main (#1)
define (a :: custom-arg) ^ (b :: custom-arg)
set [result v] to ([e ^ v] of ((b :: custom-arg) * ([ln v] of (a :: custom-arg))))
define elastic ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (0)> then
  set [Tween v] to (0)
else
  if <(Tween) = (1)> then
    set [Tween v] to (1)
  else
    (2) ^ (((10) * (Tween)) - (10)) :: custom
    set [Tween v] to (() - ((result) * ([sin v] of ((((Tween) * (10)) - (10.75)) * (120)))))
  end
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define elastic ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (0)> then
  set [Tween v] to (0)
else
  if <(Tween) = (1)> then
    set [Tween v] to (1)
  else
    (2) ^ ((-10) * (Tween)) :: custom
    set [Tween v] to (((result) * ([sin v] of ((((Tween) * (10)) - (0.75)) * (120)))) + (1))
  end
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define elastic ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) = (0)> then
  set [Tween v] to (0)
else
  if <(Tween) = (1)> then
    set [Tween v] to (1)
  else
    if <(Tween) < (0.5)> then
      (2) ^ (((20) * (Tween)) - (10)) :: custom
      set [Tween v] to ((() - ((result) * ([sin v] of ((((Tween) * (20)) - (11.125)) * (80))))) / (2))
    else
      (2) ^ (((-20) * (Tween)) + (10)) :: custom
      set [Tween v] to ((((result) * ([sin v] of ((((Tween) * (20)) - (11.125)) * (80)))) / (2)) + (1))
    end
  end
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Bounce

define bounce ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) < (0.363636)> then
  set [Tween v] to ((7.5625) * ((Tween) * (Tween)))
else
  if <(Tween) < (0.727272)> then
    set [Tween v] to (((7.5625) * (((Tween) - (0.545454)) * ((Tween) - (0.545454)))) + (0.75))
  else
    if <(Tween) < (0.90909)> then
      set [Tween v] to (((7.5625) * (((Tween) - (0.818181)) * ((Tween) - (0.818181)))) + (0.9375))
    else
      set [Tween v] to (((7.5625) * (((Tween) - (0.954545)) * ((Tween) - (0.954545)))) + (0.984375))
    end
  end
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define bounce ease in from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
set [Tween v] to ((1) - (Tween))
if <(Tween) < (0.363636)> then
  set [Tween v] to ((7.5625) * ((Tween) * (Tween)))
else
  if <(Tween) < (0.727272)> then
    set [Tween v] to (((7.5625) * (((Tween) - (0.545454)) * ((Tween) - (0.545454)))) + (0.75))
  else
    if <(Tween) < (0.90909)> then
      set [Tween v] to (((7.5625) * (((Tween) - (0.818181)) * ((Tween) - (0.818181)))) + (0.9375))
    else
      set [Tween v] to (((7.5625) * (((Tween) - (0.954545)) * ((Tween) - (0.954545)))) + (0.984375))
    end
  end
end
set [Tween v] to ((1) - (Tween))
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

define bounce ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((progress% :: custom-arg) / (100))
if <(Tween) < (0.5)> then
  set [Tween v] to ((Tween) * (2))
  set [Tween v] to ((1) - (Tween))
  if <(Tween) < (0.363636)> then
    set [Tween v] to ((7.5625) * ((Tween) * (Tween)))
  else
    if <(Tween) < (0.727272)> then
      set [Tween v] to (((7.5625) * (((Tween) - (0.545454)) * ((Tween) - (0.545454)))) + (0.75))
    else
      if <(Tween) < (0.90909)> then
        set [Tween v] to (((7.5625) * (((Tween) - (0.818181)) * ((Tween) - (0.818181)))) + (0.9375))
      else
        set [Tween v] to (((7.5625) * (((Tween) - (0.954545)) * ((Tween) - (0.954545)))) + (0.984375))
      end
    end
  end
  set [Tween v] to ((1) - (Tween))
  set [Tween v] to ((Tween) / (2))
else
  set [Tween v] to (((Tween) * (2)) - (1))
  if <(Tween) < (0.363636)> then
    set [Tween v] to ((7.5625) * ((Tween) * (Tween)))
  else
    if <(Tween) < (0.727272)> then
      set [Tween v] to (((7.5625) * (((Tween) - (0.545454)) * ((Tween) - (0.545454)))) + (0.75))
    else
      if <(Tween) < (0.90909)> then
        set [Tween v] to (((7.5625) * (((Tween) - (0.818181)) * ((Tween) - (0.818181)))) + (0.9375))
      else
        set [Tween v] to (((7.5625) * (((Tween) - (0.954545)) * ((Tween) - (0.954545)))) + (0.984375))
      end
    end
  end
  set [Tween v] to (((Tween) + (1)) / (2))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Variables / Lists

NameTypeScope
Tween
VariableSprite

Notes

The scripts in this module can be used as an alternative to TurboWarp's Tweening extension.

References

Cover Preview