Timerized action class (4 fx & whatalike)


#1

this is an initial shot of a bunch of classes that ease the creation of timerized concat of actions…

  • standard TimerizedAction classes where to start creating frame based motions and whatever you want (you’re not limited to anything!)
  • Parallel action that let you sinc two or more action to be executed togheter
  • Accordion class that let you concat more actions, each with specific duration and Transition function (linear,sinusoidal,cubic,stepped). also there is control over playback direction, speed and smoothing

in the example you can see a visual implementation of the classes. i’ve done actions for rebounds, reposition, relative resize and colour changes for the current component… and the last effects are resize and colour in parallel… but you are not limited to do this… you can create whatever like of effect you need ! (in a bunch of lines)

effects.exe

if someone is interested, it will be soon added to ejuce repository


#2

that’s a pretty cool little demo! Look forward to seeing the classes!


#3

thanx jules :wink: i’m glad you think is cool… is always a lot of happiness to hear compliments from The Man :wink:
anyway i’ve a bunch of features more to throw in, then clean the classes and document’em in juce styla and i’m proud to offer to the community…

take it as a gift for your excellent work !


#4

any chance to have a fadeInComponent function ? is this possible ? i haven’t investigated too much… but is the only thing i can’t make with the effects…


#5

i’ve eased the creation steps a bit… now is easy to chain actions and to parallelize chains, i added the possibility to loop the timeline and included more transitions. the classes need a bit of refactoring (and speedup) but for now they’re a good start for creating basic effects for components.
actually you can inherit the TimelineSystem to build up a class effect around a specific component and do things like shaking, slidein by just calling play…

example usage:

TimelineSystem* timeline = new TimelineSystem (0.8f/*smoothFactor*/,2/*loopcount*/);

SliceActionChain* chain1 = new SliceActionChain();
chain1->addAction(
	new ComponentEffectBounds(component,Rectangle(500,200,200,100)),
	500, /*milliseconds*/
	TransitionLinear::stepToNextFrame
);
chain1->addAction(
	new ComponentEffectRelativeSize(component,2.0f,2.0f),
	1000, /*milliseconds*/
	TransitionPlastic::stepToNextFrame
);
chain1->addAction(
	new ComponentEffectBounds(component,Rectangle(100,100,200,20)),
	2000, /*milliseconds*/
	TransitionSinusoidal::stepToNextFrame
);

// chain2...3..

timeline->addChain(chain1);
timeline->addChain(chain2);
// ...

timeline->play();

timeline.zip
hope you like :wink: … [size=117]ah maybe you have to double click on the window to make something happen[/size]


#6

I made a fade in function that just subclasses from fade-out, does a few other things as well depending on what you tell it to do, if I can find it in one of my hundred or so testing projects that use juce, I’ll post it up.


#7

yeah thanx overmindl1… i can implement it, isn’t so difficult but i asked that logically the Component::fadeInComponent could live near the Component::fadeOutComponent function, if we can use the latter… why the former isn’t there ?


#8