<< Chapter < Page
  Xna game studio     Page 6 / 12
Chapter >> Page >
"Gets the milliseconds component of the time interval represented by thecurrent TimeSpan structure."

Therefore, the first line of new code in Listing 4 returns the elapsed time in milliseconds since the last call to the Update method.

Accumulate and compare elapsed time

Listing 4 adds the value in milliseconds to an accumulator variable named msElapsed each time the Update method is called.

Listing 4 also compares the accumulated value with the desired animation interval stored in msElapsed . If the accumulated value exceeds the desired animation interval, the accumulated value is set to zero and thebody of the if statement that begins in Listing 4 is executed to modify the drawing parameters.

Compute the location of the sprite to draw

The code in Listing 5 computes the location in pixel coordinates of the sprite image that needs to be drawn the next time the Draw method is called.

Listing 5 . Compute the location of the sprite to draw.

xStart = spriteCol * frameWidth; yStart = spriteRow * frameHeight;

That sprite image is identified by the intersection of the spriteCol column and the spriteRow row in Figure 1 .

The column and row values are used in conjunction with the width and height of the sprite images to compute the coordinates of the upper-left corner of thesprite image to be drawn. These values are stored in xStart and yStart , which will be used in the Draw method to select the correct image from I mage 1 and to draw that image.

The overall animation cycle

The program plays five animation cycles of the five sprite images in the top row of Figure 1 . These five cycles are played with the fast animation frame rate discussed earlier. This is controlled by a counter variablenamed funSequenceCnt . (This name was chosen because these images portray the dog running and jumping and having fun.)

Two animation cycles from the bottom row of sprite images

Then the program plays two animation cycles of the five sprite images in the bottom row of Figure 1 . These five cycles are played with the slow animation frame rate discussed earlier.

Pause and animate in the same location

During this period, the dog doesn't move across the game window but rather the animation cycles are played with the dog remaining in the same location.This is controlled by a counter variable named pauseSequenceCnt . (This name was chosen because the dog pauses and animates in the same location.)

After that, the overall cycle repeats.

Some complex logic

This is where the logic becomes a little complex and it remains to be seen how well I can explain it. However, my students are supposed to have theprerequisite knowledge that prepares them to dissect and understand complex logic directly from source code.

Adjust column and row counters

The drawing parameters have already been established to identity the sprite image that will be drawn the next time the Draw method is called. The code that follows is preparing for the sprite selection that willtake place after that one.

Increment the column counter and compare

Listing 6 increments the column counter and compares it with the number of columns in the sprite sheet in Figure 1 . If they match, Listing 6 resets the column counter to 0 and increments the funSequenceCnt to indicate that another one of the five cycles through the five images in the toprow of Figure 1 has been completed.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Xna game studio. OpenStax CNX. Feb 28, 2014 Download for free at https://legacy.cnx.org/content/col11634/1.6
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Xna game studio' conversation and receive update notifications?

Ask