官术网_书友最值得收藏!

Time for action – draw SquareChase!

  1. Alter the GraphicsDevice.Clear(Color.CornflowerBlue) call and replace Color.CornflowerBlue with Color.Gray to make the game a bit easier on the eyes.
  2. Add the following code after the call to clear the display:
    spriteBatch.Begin()
    spriteBatch.Draw(
      squareTexture,
      currentSquare,
      colors(playerScore Mod 3))
    spriteBatch.End()

What just happened?

Any time you use a SpriteBatch object to draw to the display, you need to wrap the calls inside a Begin() and End() pair. Any number of calls to spriteBatch.Draw() can be included in a single batch, and it is common practice to simply start a Begin() at the top of your Draw() code, use it for all of your drawing, and then End() it right before the Draw() method exits. While not benefiting our SquareChase game, batching sprite drawing calls greatly speeds up the process of drawing a large number of images, by submitting them to the rendering system all at once instead of processing each image individually.

The SpriteBatch.Draw() method is used to draw a Texture2D object to the screen. There are a number of different options for how to specify what will be drawn. In this case, the simplest call requires a Texture2D object (squareTexture), a destination Rectangle (currentSquare), and a tint color to apply to the sprite. The expression "playerScore Mod 3" takes the player's score, divides it by 3, and returns the remainder. The result will always be 0, 1, or 2. This fits perfectly as an index to the elements in the colors array, allowing us to easily change the color of the square each time the player catches one.

Finally, the spriteBatch.End() tells XNA that we have finished queuing up sprites to draw and it should actually push them all out to the graphics card.

主站蜘蛛池模板: 广宗县| 大邑县| 沧州市| 江山市| 通渭县| 濮阳市| 宁城县| 金沙县| 长乐市| 洛隆县| 甘南县| 泰和县| 同心县| 漠河县| 临清市| 梁河县| 大同县| 太仓市| 水城县| 报价| 高平市| 连江县| 梅河口市| 利津县| 连江县| 勃利县| 文化| 太保市| 余庆县| 湖北省| 盐城市| 通州区| 昭觉县| 唐海县| 宜川县| 景德镇市| 新闻| 博兴县| 祁连县| 横峰县| 都安|