Applying Image Effects

ImagesTests uses a Swing timer to animate its image effects rather than the active rendering approach developed in early chapters. This is purely a matter of preventing the code from becoming overly complicated since the high accuracy offered by active rendering isn't required. The visual effects employed here are generally composed from 5 to 10 distinct frames, displayed over the course of one or two seconds; this implies a need for a maximum of 10 FPS, which is within the capabilities of the Swing timer.

Tip

If necessary, the effects techniques can be easily translated to an active rendering setting.

The timer-driven framework is illustrated by Figure 6-4. The details of actionPerformed() and paintComponent() are explained below.

ImagesTests and the Swing timer

Figure 6-4. ImagesTests and the Swing timer

ImagesTests maintains a global variable (counter) that starts at 0 and is incremented at the end of each paintComponent() call, modulo 100.

Tip

The modulo operation isn't significant but is used to keep the counter value from becoming excessively large.

counter is used in many places in the code, often to generate input arguments to the visual effects.

Starting ImagesTests

The main() method for ImagesTests creates a JFrame and adds the ImagesTests JPanel to it:

 public static void main(String args[]) { // switch on translucency acceleration in Windows System.setProperty("sun.java2d.translaccel", ...

Get Killer Game Programming in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.