Figure 3 shows the sprite answering nature's call. This is a flipped version of one of images from the bottom row of Figure 1 .
Figure 3 . Sprite answering nature's call. |
---|
|
Sprite running to the left
Figure 4 shows the sprite running from right to left. This is one of the images from the top row of Figure 1 .
Figure 4 . Sprite running to the left. |
---|
|
What you have learned
In the previous module , you learned how to use objects of the SpriteSheet class and the Animation class to perform simple sprite sheet animation.
What you will learn
In this module, you will learn how to use objects of the SpriteSheet class and the Animation class to perform more complex sprite sheet animations than was in the previous module.
General background information
The SpriteSheet class
There isn't much that's new in this module regarding the SpriteSheet class. The program instantiates and populates a SpriteSheet object and used the images stored in that object to populate an Animation object.
The SpriteSheet object is used in a different way than was the case in the previous module, but that will be explained in conjunction withpopulating the Animation object.
The Animation class
An Animation object is populated in a significantly different way in this module than in the previous module.
In the previous module, a SpriteSheet object's reference was passed to the Animation constructor along with a specification of the images to be extracted from the sprite sheet and the amount of time thateach image should be displayed. The Animation constructor extracted the images from the sprite sheet and populated the new Animation object automatically. Among other restrictions, it was necessary that each image bedisplayed for the same amount of time.
One image at a time
In this module, an empty Animation object is instantiated and then populated one image at a time. (Of course, loops are used to make that process easier.) Among other things, this makes it possible to:
- Use multiple copies of the individual images on the sprite sheet
- Use flipped versions of the images on the sprite sheet
- Specify different display times for the different images on the sprite sheet
Different animation rates
For example, the display times for the images from the bottom row of Figure 1 are four times greater than the display times for the images from the top row. Thus, the animation slows down when the spritestops to answer nature's call on the right side of the game window then speeds up again when the sprite starts running from right to left.
Discussion and sample code
The class named Slick0190
Will discuss in fragments
A complete listing of the program named Slick0190 is provided in Listing 11 . I will break the program down and discuss it in fragments.
Listing 1 shows the beginning of the class named Slick0190 down through the main method. There is nothing in Listing 1 that should require an explanation beyond the embedded comments. However, it is worth noting thatunlike the previous module, Listing 1 instantiates a new empty object of the class Animation and saves its reference in the instance variable named animation . This object will be populated with images by the init method later.