This page is optimized for mobile devices, if you would prefer the desktop version just click here

0.13 Xna0124-using background images and color key transparency  (Page 4/9)

Figure 12 . Heading for home.

Discussion and sample code

As usual, I will explain the code in this program in fragments. A complete listing of the class named Game1 is provided in Listing 11 near the end of the module.

The class named Game1

The class named Game1 begins in Listing 1 .

Listing 1 . Beginning of the class named Game1.

namespace XNA0124Proj { public class Game1 : Microsoft.Xna.Framework.Game {GraphicsDeviceManager graphics; SpriteBatch spriteBatch;private Viewport viewport; private Vector2 ufoPosition;private float backgroundScale; private float backgroundBaseScale;private float dynamicScale = 0.0f; int msElapsed;//Time since last new frame.int msPerFrame = 83;//30 updates per second Texture2D spaceTexture;//background imageTexture2D ufoTexture;//ufo image Vector2 spaceOrigin;//origin for drawing background

Listing 1 contains the declarations of several instance variables that will be used later in the program. I will explain their purpose when theyare used later.

The constructor for the class named Game1

The constructor for the class is shown in Listing 2 .

Listing 2 . The constructor for the class named Game1.

public Game1() {//constructor graphics = new GraphicsDeviceManager(this);Content.RootDirectory = "Content"; //Set the size of the game window, causing the// aspect ratio of the game window to match the // aspect ratio of the background image, which is// 640 wide by 480 high. graphics.PreferredBackBufferWidth = 450;graphics.PreferredBackBufferHeight = (int)(450.0*480/640);}//end constructor

Setting the size of the game window

The last two statements in Listing 2 set the size of the game window. You have seen code like this before in an earlier module. The only thing new here is the expression used to compute the value for the height of the gamewindow.

Maintaining the aspect ratio

The background image shown in Figure 3 is 640 pixels wide by 480 pixels high. When it is initially drawn, it will be scaled to a width of 450 pixels keepingthe same width to height ratio (the aspect ratio). The intent is that it will initially just fit inside the game window.

The expression used to compute the new height of the game window in Listing 2 causes the aspect ratio of the game window to match the aspect ratio of thebackground image.

The overridden LoadContent method

The overridden LoadContent method begins in Listing 3 .

Listing 3 . Beginning of the overridden LoadContent method.

protected override void LoadContent() { // Create a new SpriteBatch, which can be used to// draw textures. spriteBatch = new SpriteBatch(GraphicsDevice);//Load the two images. spaceTexture = Content.Load<Texture2D>("space"); ufoTexture = Content.Load<Texture2D>("ufo"); //Get a reference to the viewport.viewport = graphics.GraphicsDevice.Viewport;

The new material

The only thing that is new in Listing 3 is the last statement.

Viewport is a property of the GraphicsDevice class and is a Structure named Viewport .

<< Chapter < Page Page > Chapter >>

Read also:

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.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.