<< Chapter < Page | Chapter >> Page > |
The variable named winWidth is set to the width of the game window. The value Window.ClientBounds.Width could have been used everywhere that winWidth is used but the length of the expression created some formatting problems when attempting to format the sourcecode for this narrow publication format.
You will recall that after initialization, the XNA game loop switches back and forth between calling the Update method and the Draw method. The Update method is overridden to implement the game logic and the Draw method is overridden to render the current state of the game on the computer screen.
The Update method in the earlier modules has been fairly simple. That is not the case in this module. The Update method in this module, which begins in Listing 4 , contains some fairly complex logic.
Listing 4 . Beginning of the Update method.
protected override void Update(GameTime gameTime) {
// Allows the game to exitif(GamePad.GetState(PlayerIndex.One).Buttons.Back
== ButtonState.Pressed)this.Exit();
//-----------------------------------------------////New code begins here.
msElapsed += gameTime.ElapsedGameTime.Milliseconds;if(msElapsed>msPerFrame){
//Reset the elapsed time and draw the new frame.msElapsed = 0;
The code at the beginning of Listing 4 is the standard code that is generated by Visual C# when you create a new Windows Game project.
The new code in Listing 4 deals with the animation frame rate . The animation frame rate needs to be much slower than the default repetition rate ofthe game loop, which is 60 iterations per second. Otherwise the dog would run around so fast that it wouldn't look natural.
Therefore, we won't change the drawing parameters during every iteration of the game loop. Instead, we will cause the sprite to be drawn in the game windowsixty times per second, but many of those drawings will look exactly like the previous drawing.
We will accomplish this by changing the drawing parameters only once every msPerFrame milliseconds. (Recall that msPerFrame can have either of two values: fast and slow .)
Each time the Update method is called, an incoming parameter contains information in an object of type GameTime that allows us to determine the number of milliseconds that have elapsed since the last timethe Update method was called.
The documentation for the GameTime class has this to say:
The GameTime object has several properties, one of which is named ElapsedGameTime . This property, which is a structure of type TimeSpan provides:
A TimeSpan structure has a large number of properties including one named Milliseconds . This property:
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?