成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

創建第一個XNA程序:Hello XNA

移動開發
下面創建一個簡單的Windows Phone 7的XNA程序,只是一個Hello XNA的文本,從屏幕的左上角一直往右下角移動,通過該例子來開始Windows Phone 7 XNA的游戲編程。

下面創建一個簡單的Windows Phone 7的XNA程序,只是一個Hello XNA的文本,從屏幕的左上角一直往右下角移動,通過該例子來開始Windows Phone 7 XNA的游戲編程。

新建一個項目后可以看到這樣的一個項目工程結構,如圖所示。

項目工程結構

Content項目是表示游戲的資源文件,相關游戲的資源就需要在Content目錄下進行添加。

看一下Game1.cs這個主要的類:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using Microsoft.Xna.Framework;  
  5. using Microsoft.Xna.Framework.Audio;  
  6. using Microsoft.Xna.Framework.Content;  
  7. using Microsoft.Xna.Framework.GamerServices;  
  8. using Microsoft.Xna.Framework.Graphics;  
  9. using Microsoft.Xna.Framework.Input;  
  10. using Microsoft.Xna.Framework.Input.Touch;  
  11. using Microsoft.Xna.Framework.Media;  
  12.  
  13. namespace HelloWorldXNA  
  14. {  
  15.     /// <summary> 
  16.     /// 游戲的主要主體類  
  17.     /// </summary> 
  18.     public class Game1 : Microsoft.Xna.Framework.Game  
  19.     {  
  20.         GraphicsDeviceManager graphics;//用于管理圖形設備  
  21.         SpriteBatch spriteBatch;//游戲的圖形設備來畫2D對象  
  22.  
  23.         SpriteFont spriteFont1;//字體  
  24.         Viewport viewport;//窗體  
  25.         Vector2 textSize;//字體大小 二維向量  
  26.         Vector2 textPosition;//字體位置  
  27.  
  28.         public Game1()  
  29.         {  
  30.             graphics = new GraphicsDeviceManager(this);  
  31.             Content.RootDirectory = "Content";  
  32.  
  33.             // Frame rate is 30 fps by default for Windows Phone.  
  34.             TargetElapsedTime = TimeSpan.FromTicks(333333);  
  35.  
  36.             // Extend battery life under lock.  
  37.             InactiveSleepTime = TimeSpan.FromSeconds(1);  
  38.         }  
  39.  
  40.         /// <summary> 
  41.         /// 游戲運行前的一些初始化  
  42.         /// </summary> 
  43.         protected override void Initialize()  
  44.         {  
  45.             //在這里添加游戲的一些初始化處理  
  46.             base.Initialize();  
  47.         }  
  48.  
  49.         /// <summary> 
  50.         /// 加載游戲資源,LoadContent只會執行一次  
  51.         /// </summary> 
  52.         protected override void LoadContent()  
  53.         {  
  54.             // Create a new SpriteBatch, which can be used to draw textures.  
  55.             spriteBatch = new SpriteBatch(GraphicsDevice);  
  56.  
  57.             // TODO: use this.Content to load your game content here  
  58.             viewport = this.GraphicsDevice.Viewport;//獲取游戲的窗體  
  59.             spriteFont1 = this.Content.Load<SpriteFont>("SpriteFont1");//加載字體資源  
  60.             textSize = spriteFont1.MeasureString("Hello,XNA!");//返回字符創的高度和寬度  
  61.             textPosition = new Vector2(0, 0);  
  62.         }  
  63.  
  64.         /// <summary> 
  65.         /// 游戲退出,回收資源  
  66.         /// </summary> 
  67.         protected override void UnloadContent()  
  68.         {  
  69.             // TODO: Unload any non ContentManager content here  
  70.         }  
  71.  
  72.         /// <summary> 
  73.         /// 繪制游戲前的更新處理  
  74.         /// </summary> 
  75.         /// <param name="gameTime">游戲的當前時間對象</param> 
  76.         protected override void Update(GameTime gameTime)  
  77.         {  
  78.             // Allows the game to exit  
  79.             if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)  
  80.                 this.Exit();  
  81.  
  82.             // TODO: Add your update logic here  
  83.             if (textPosition.X < viewport.Height)  
  84.             {  
  85.                 textPosition.Y += 10 * (float)gameTime.ElapsedGameTime.TotalSeconds;  
  86.                 textPosition.X += 20 * (float)gameTime.ElapsedGameTime.TotalSeconds;  
  87.             }  
  88.             else  
  89.             {  
  90.                 textPosition.Y -10000 * (float)gameTime.ElapsedGameTime.TotalSeconds;  
  91.                 textPosition.X -20000 * (float)gameTime.ElapsedGameTime.TotalSeconds;  
  92.             }  
  93.  
  94.             base.Update(gameTime);  
  95.         }  
  96.  
  97.         /// <summary> 
  98.         /// 繪制游戲  
  99.         /// </summary> 
  100.         /// <param name="gameTime">游戲的當前時間對象</param> 
  101.         protected override void Draw(GameTime gameTime)  
  102.         {  
  103.             GraphicsDevice.Clear(Color.CornflowerBlue);  
  104.  
  105.             // TODO: Add your drawing code here  
  106.             spriteBatch.Begin();  
  107.             spriteBatch.DrawString(spriteFont1, "Hello,XNA!", textPosition, Color.Red);  
  108.             spriteBatch.End();  
  109.  
  110.             base.Draw(gameTime);  
  111.         }  
  112.     }  

 

運行的效果如下:

運行效果

對于新建一個XNA for WP7的工程,可以看到在它的工程文件中,有:Initialize(), LoadContent(), Update(),Draw()這幾個主要的函數,那由些也就可以看得出XNA開發游戲的一個基本架構了:

Loading:用來加載保證游戲可以正常運行的所有資源等,這個狀態在整個系統中只在游戲開始前運行,也就是說整個游戲的生命周期中只運行一次。

Update:這個狀態是由所設置的時間間隔來驅動的,在每個時間間隔里重新計算游戲中各角色的狀態,以及游戲分值和各種游戲邏輯。一般默認為每秒30次(幀),如果設置間隔過大,游戲可能無法啟動。

Draw:這個狀態也是由所設置的時間間隔來驅動的,用來繪制各種變化到顯示設置上。

對于XNA資源,在創建新的工程時,就一起創建了一個Content工程,所有的資源(圖片、聲音、視頻、字體、3D造形、紋理等)都要加載到這個工程中,并被這個工程編譯為.xnb格式的XNA二進制文件,這樣才可以加載到游戲中,并被調用。

XNA游戲的生命周期如圖所示:

XNA游戲的生命周期

1.GraphicsDeviceManager:在XNA類庫介紹中提到的該類型是非常重要的。它為開發者提供方法來管理目標設備的顯卡資源。簡單地說就是調用顯卡的一個接口,該對象的GraphicsDevice屬性代表當前目標設備的顯卡。

2.SpriteBatch:該對象主要的作用是繪制文字和2D圖像。在游戲開發過程中,它的作用是非常重要的,因為游戲需要大部分圖片、文字和聲音等素材資源。所有游戲中需要顯示的畫面都必須經過SpriteBatch對象中的Draw方法來繪制。

3.Initialize( ):該方法用來初始化游戲程序的變量和對象。它允許游戲在運行之前做一些初始化的工作。可以在此查詢任何需要的服務和載入與圖形無關的內容。例如,顯卡設備、游戲分數設置等。

4.LoadContent( ):當初始化完畢后,程序就進入LoadContent,該方法用來加載游戲的素材,包括游戲的模式、聲音、圖像等。這個方法在一個游戲中只會被調用一次,并且是加載所有素材的地方。

5.Update( ):該方法相當于Direct3D中的FrameMove,簡單地說就是在圖形上修改當前畫面。它主要用于游戲執行一些邏輯,如:刷新畫面、檢查碰撞、更新分數、檢測游戲進程、收集輸入數據以及播放音頻等。

6.Draw( ):該方法相當于Windows編程的Paint或者OnPaint,是系統自動繪圖的方法。

游戲程序執行完LoadContent后,開始進入一個游戲循環,無論用什么語言編寫游戲程序,都需要一個游戲循環,這也是游戲程序與應用程序的***區別。在XNA游戲項目中,游戲循環主要由Update和Draw兩個方法組成。

原文鏈接:http://www.cnblogs.com/linzheng/archive/2011/09/20/2182964.html

【編輯推薦】

  1. XNA游戲開發中橫豎屏的設置
  2. 詳解Windows Phone XNA 4.0 3D游戲開發
  3. 爆料:C#和XNA可以在iOS和Android平臺使用
責任編輯:王曉東 來源: 博客
相關推薦

2013-10-30 22:10:28

Clouda程序

2024-03-13 13:53:10

C++程序開發

2011-06-08 10:01:36

Windows Pho 應用程序

2011-06-08 10:24:38

Windows Pho 應用程序

2010-08-04 13:16:23

Flex項目

2023-06-01 08:24:08

OpenAIChatGPTPython

2023-05-19 08:49:58

SQLAlchemy數據庫

2009-06-26 16:07:43

MyEclipse開發Hibernate程序

2010-07-30 14:50:38

Flex項目

2013-12-26 15:25:15

Android開發安裝開發環境Hello World

2024-06-07 08:59:35

2012-05-28 15:55:47

XNA 重力感應

2012-05-22 14:26:15

XNA 橫豎屏設置

2011-03-10 10:45:47

Azure“Hello Worl

2022-11-01 07:23:55

Dockernetcore程序

2011-06-24 13:38:32

QT 編譯 安裝

2009-07-17 16:10:42

JRuby入門教程

2019-12-31 08:00:00

DebianLinuxApple Swift

2013-06-14 17:16:44

WP開發Windows PhoWP應用

2009-06-25 15:11:28

Struts2教程Struts2程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区福利视频 | 国产一区二区三区免费 | 亚洲免费一区二区 | 日韩欧美手机在线 | 日韩精品在线看 | 国产日韩欧美中文字幕 | 黄色片视频网站 | 成人久久18免费网站 | 国产麻豆一区二区三区 | 国产精品欧美精品日韩精品 | 国产精品久久久久久久久久 | www.日日干| 日韩高清在线观看 | 国产精品久久久久久网站 | 国产精品久久久久久中文字 | 亚洲字幕在线观看 | 精品少妇一区二区三区日产乱码 | 俺去俺来也www色官网cms | 国产精品96久久久久久 | 国产精品一级 | 国产一级毛片精品完整视频版 | 亚洲精品日韩综合观看成人91 | 欧美一级免费片 | 在线中文视频 | 91中文字幕 | 91原创视频| 亚洲成人播放器 | 国产免费播放视频 | 亚洲精品久久区二区三区蜜桃臀 | 黄色国产大片 | 射欧美| 久久久久国产精品www | 日韩视频免费在线 | 婷婷亚洲综合 | 国产精品夜色一区二区三区 | 天天射天天干 | 嫩草视频在线免费观看 | 国产精品久久久久久52avav | 久草视频在线播放 | 亚洲网站在线观看 | 羞羞的视频免费观看 |