package br.com.etyllica.animation.timeline; import java.util.ArrayList; import java.util.List; public abstract class Timeline<T, F> { protected int cursor = 0; protected List<KeyFrame<F>> frames = new ArrayList<KeyFrame<F>>(); public Timeline() { super(); } public void nextFrame() { if(cursor<frames.size()-1) { cursor++; reloadFrame(currentFrame()); } } public void nextFrameLoop() { cursor++; cursor%=frames.size(); reloadFrame(currentFrame()); } public void previousFrame() { if(cursor > 0) { cursor--; reloadFrame(currentFrame()); } } public KeyFrame<F> currentFrame() { return frames.get(cursor); } public int frameCount() { return frames.size(); } public int getCursor() { return cursor; } public abstract void reloadFrame(KeyFrame<F> frame); }