Animation Overview - News - Installation - Reference - Examples - FAQ  
 

Click a question to jump to its answer.

 

Who made this?
I'm Jim Garretson. I built this as MHCI coursework under the direction of the artist formerly known as Golan Levin. Feel free to contact me with questions or concerns.

back

 

Why do I need this?
Well, you don't need it. The Animation object doesn't do anything Processing couldn't already do. It simply encapsulates all of the timestamp-tracking, counter-setting tedium required when making simple animations, hopefully making the programmer's life a bit easier.

My ulterior motive (I'm from here, after all) is that this object hopefully makes it a five-minute job to add better feedback to custom widgets. (See the examples page for .. examples.)

back

 

How do I use this?
You'll need to download the Animation.java file and put it in the code folder of your sketch (or source folder if you're using Eclipse or another IDE). Detailed instructions can be found here.

back

 

How do I make a different motion?
There are a number of motions predefined; to get at them (or to make your own) use the setStep() method.

back

 

Why does my Animation go outside the rectangle on the right and bottom sides?
Because the Animation object internally calls the Processing image() method, which means that the specifics of image placement are actually being controlled by Processing's imageMode() method.

The most flexible way to control placement of your graphic is through setRegistrationPoint().

back

 

Why does currentPercentage() always return 0?
currentPercentage() returns a float, which means it will always return a decimal value between 0 and 1. (25%, for example, comes out as 0.25). If you're storing the result of the call in an int, Java will round to 0. Use a float instead.

back

 

Why does my custom step method throw a null pointer exception?
If you're calling image() inside your method, and the Animation doesn't have an image defined (if, for example, another Animation is nested inside of it), then image() will return null. You'll need to handle the case that image() returns null in order for your custom step method to work as a step method for a nested animation.

back

 

I don't want to use a BImage. How do I set a custom draw method?
Excellent question. You can't actually pass another method to the Animation constructor, but you can define a custom step method. What I'd suggest you do is this:

 

Animation a;

void setup()
{
size(400,100);
stroke(0);
strokeWeight(2);
fill(230,50,50);

// pass null as a BImage, so nothing is drawn.
a = new Animation(this, (BImage)null, 100,20, 200, 40);
a.setDuration(5000);
a.setStep("myDraw");
}


void loop()
{
background(127);
a.draw();
}

// custom step method also does the drawing.
float[] myDraw(float percent)
{
// you can call a predefined step method, or calculate the new position yourself.
float new_position[] = a.BOX(percent);
ellipse(new_position[0], new_position[1], 50, 30);
return new_position;
}

 

It's not the most elegant solution, but it does keep all of the drawing encapsulated within the Animation object and supporting functions. Most importantly, it stays out of loop().

 

Why has my Processing window frozen?
It may be because you've accidentally called an Animation's methods (for example, draw() ) before the constructor has been called. If that's not it, please drop me a line.

back