class WhirledPeas::Animator::Frameset

Attributes

duration[R]
easing[R]
frames[R]

Public Class Methods

new(duration, easing, effect) click to toggle source
# File lib/whirled_peas/animator/frameset.rb, line 7
def initialize(duration, easing, effect)
  @duration = duration
  @easing = Easing.new(easing, effect)
  @frames = []
end

Public Instance Methods

add_frame(name, args: {}) click to toggle source
# File lib/whirled_peas/animator/frameset.rb, line 13
def add_frame(name, args: {})
  frames << [name, args]
end
each_frame() { |frame, duration, args| ... } click to toggle source

Yield each frame in an “eased” order

# File lib/whirled_peas/animator/frameset.rb, line 18
def each_frame(&block)
  return if frames.length == 0
  if frames.length == 1
    frame, args = frames[0]
    yield frame, duration, args
  else
    frames.each.with_index do |(frame, args), index|
      curr_ease = @easing.invert(index.to_f / frames.length)
      next_ease = @easing.invert((index + 1).to_f / frames.length)
      yield frame, duration * (next_ease - curr_ease), args
    end
  end
end