<< Chapter < Page | Chapter >> Page > |
Therefore, the first line of new code in Listing 4 returns the elapsed time in milliseconds since the last call to the Update method.
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.
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 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.)
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.
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.
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.
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.
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.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?