Scratch Modules Gallery

Tweening

Use tweening/interpolation for smooth animation.

animation tween

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 幂 (乘方) · 主脚本 (#1)
define (a :: custom-arg) ^ (b :: custom-arg)
set [a^b v] to (1)
repeat (b :: custom-arg)
  set [a^b v] to ((a^b) * (a :: custom-arg))
end
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 (a^b)
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) - (a^b))
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 ((a^b) / (2))
    else
      (2) ^ (((-20) * (Tween)) + (10)) :: custom
      set [Tween v] to (((2) - (a^b)) / (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 ((进度 :: 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 back ease out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((进度 :: 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 back ease in-out from (start :: custom-arg) to (end :: custom-arg) progress (progress% :: custom-arg)
set [Tween v] to ((进度 :: custom-arg) / (100))
if <(Tween) < (0.5)> then
  set [Tween v] to ((Tween) * (2))
  set [Tween v] to ((Tween) / (100))
  set [Tween v] to ((Tween) * (100))
  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) / (2))
  set [Tween v] to ((Tween) + (0.5))
end
set [Tween v] to (((Tween) * ((end :: custom-arg) - (start :: custom-arg))) + (start :: custom-arg))

Elastic

Imported Module 幂 (乘方) · 主脚本 (#1)
define (a :: custom-arg) ^ (b :: custom-arg)
set [a^b v] to (1)
repeat (b :: custom-arg)
  set [a^b v] to ((a^b) * (a :: custom-arg))
end
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 (() - ((a^b) * ([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 (((a^b) * ([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 ((() - ((a^b) * ([sin v] of ((((Tween) * (20)) - (11.125)) * (80))))) / (2))
    else
      (2) ^ (((-20) * (Tween)) + (10)) :: custom
      set [Tween v] to ((((a^b) * ([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
补间VariableSprite

References