Sha256: f8d325f98beda3185ea39e0cc7f8c065cb794e5b3d919d44deee32201c036445
Contents?: true
Size: 977 Bytes
Versions: 2
Compression:
Stored size: 977 Bytes
Contents
require_relative 'easing' require_relative 'frame' module WhirledPeas module Animator class Frameset def initialize(duration, easing, effect) @duration = duration @easing = Easing.new(easing, effect) @frames = [] end def add_frame(name, args: {}) frames << [name, args] end # Yield each frame in an "eased" order 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 private attr_reader :duration, :easing, :frames end private_constant :Frameset end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
whirled_peas-0.13.0 | lib/whirled_peas/animator/frameset.rb |
whirled_peas-0.12.0 | lib/whirled_peas/animator/frameset.rb |