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