<< Chapter < Page Chapter >> Page >
Listing 5 . Set frame rate and display location.
gc.setShowFPS(true);//show FPS ////set frame rategc.setTargetFrameRate((int)(1000/targetDelta)); //Set drawing location. This is the location within// the game window where the sprite will be displayed. spriteX = spriteWidth;spriteY = 0; }//end init

The update method

The update method is shown in Listing 6 . As indicated in the comments, the computation of totalTime in the method has nothing to do with the animation. Instead, it is used to display the clock timeas shown in Figure 2 .

Listing 6 . The update method.
public void update(GameContainer gc, int delta) throws SlickException{//Note that the following is for clock time display // only. It does not effect the animation.totalTime += delta;//update total time accumulator }//end update

The render method

The render method is shown in Listing 7 . The only thing that is new here is the call to the draw method on the Animation object.

Listing 7 . The render method.
public void render(GameContainer gc, Graphics g) throws SlickException{g.setDrawMode(g.MODE_NORMAL); g.setBackground(Color.gray);//Draw the currently selected animation image at the // specified locationanimation.draw(spriteX,spriteY); g.drawString("totalTime = "+totalTime/1000,10f,100f);}//end render }//end class Slick0180

Powerful behavior

The behavior of the Animation object and its draw method is very powerful.

  • The Animation object keeps track of the scheduling requirements of the animation, such as which image should be displayedat the current time.
  • Calling the draw method on the Animation object causes that image to actually be displayed.

The image display schedule being managed by the Animation object is independent of the frame rate.

The Animation object does its thing, and the render method does its thing virtually independent of one another. When the render method decides that it is time to display an animation image, it calls the draw method on the Animation object.

The Animation object delivers the image that is scheduled for display at that point in time according to the predetermined animationschedule and the draw method causes the image to be displayed.

Overloaded draw methods

There are several overloaded versions of the draw method including versions to filter the colors and to change the width and height ofthe displayed image.

Best results

Now you know why, as mentioned earlier , best results are achieved by keeping targetDelta less than the display time ( duration ) for each sprite. If targetDelta is greater than the duration , some images will be skipped and not displayed in the proper sequence.

For example, if the Animation object is switching from one image to the next every 0.10 second, but the draw method is only being called every 0.13 seconds, some of the images in the sequence won'tbe displayed and the quality of the animation will probably be poor.

However, this is also dependent on the amount of change from one image to the next. Ifthe change from one image to the next is small, then skipping an occasional image might not matter that much.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Anatomy of a game engine. OpenStax CNX. Feb 07, 2013 Download for free at https://legacy.cnx.org/content/col11489/1.13
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Anatomy of a game engine' conversation and receive update notifications?

Ask