Windows Phone 7 XNA也可以喔!

Windows Phone 7 XNA也可以喔!

window phonr 7除了可以用silverlight實作以外,也可以用XNA做遊戲喔!!而且作法也很簡單。

首先開啟Windows Phone Game(4.0)專案

image

要開發WP7必須用XNA 4.0,和以前版本較大的不同就是Content和主程式分離,基本的目錄結構變成這樣

image

不過使用起來是差不多的!

看一下建構式

   1: public Game1()
   2: {
   3:    graphics = new GraphicsDeviceManager(this);
   4:    Content.RootDirectory = "Content";
   5:    
   6:    // Frame rate is 30 fps by default for Windows Phone.
   7:    TargetElapsedTime = TimeSpan.FromTicks(333333);
   8: }

第7行是設定FPS為30,因為XNA預設的FPS是60,而WP7是30FPS,所以要自己設定。

接著我們隨便選一張圖片拉近Content裡,然後改名字叫Pic。

然後輸入程式碼如下

 

   1: Texture2D picture;
   2: protected override void LoadContent()
   3: {
   4:     spriteBatch = new SpriteBatch(GraphicsDevice);
   5:  
   6:     picture = Content.Load<Texture2D>("Pic");
   7: }
   8:  
   9: protected override void Draw(GameTime gameTime)
  10: {
  11:     GraphicsDevice.Clear(Color.CornflowerBlue);
  12:  
  13:     spriteBatch.Begin();
  14:     spriteBatch.Draw(picture, new Vector2(0, 0), Color.White);
  15:     spriteBatch.End();
  16:     base.Draw(gameTime);
  17: }

 

第6行載入圖片,第13到15行在原點畫出這張圖,這樣就會在模擬器螢幕上的原點畫出那張圖

 

image image image image

這!!好像和我們認知的原點不一樣ㄝ,而且轉方向後圖還會跑到下面。

這是因為現在的智慧手機都可以隨著螢幕的方向讓畫面做改變,

所以遊戲也不一定只能直的玩,因此模擬器一開始是以螢幕在左邊的方式啟動遊戲,

甚麼叫螢幕在左邊的方式呢?

這就要講到DisplayOrientation這個列舉的功能了,

這個列舉有四個值

Default預設值,會自動幫你轉
LandscapeLeft螢幕在左邊
LandscapeRight螢幕在右邊
Portrait螢幕是直的

這四種可以用OR做多選,並且最好在建構子的時候設定,那我們就設定為直的試試看囉!

建構子如下

   1: public Game1()
   2: {
   3:     graphics = new GraphicsDeviceManager(this);
   4:     Content.RootDirectory = "Content";
   5:  
   6:     graphics.SupportedOrientations = DisplayOrientation.Portrait;
   7:     
   8:     // Frame rate is 30 fps by default for Windows Phone.
   9:     TargetElapsedTime = TimeSpan.FromTicks(333333);
  10: }

那我們來試試看執行結果

image

哇~這是怎樣!!

原來是XNA預設的大小是寬800、高480,但是我們卻設定只能是直的,

所以畫面會被超出螢幕,我們可以設定遊戲的長寬

把建構子改成下面這樣

   1: public Game1()
   2: {
   3:     graphics = new GraphicsDeviceManager(this);
   4:     Content.RootDirectory = "Content";
   5:  
   6:     graphics.PreferredBackBufferHeight = 800;
   7:     graphics.PreferredBackBufferWidth = 480;
   8:     graphics.SupportedOrientations = DisplayOrientation.Portrait;
   9:     
  10:     // Frame rate is 30 fps by default for Windows Phone.
  11:     TargetElapsedTime = TimeSpan.FromTicks(333333);
  12: }

跑出來的畫面就會是直的了

image

基本的貼圖就介紹到這裡,對已經有開發過XNA的人來說,要開發手機遊戲真的是很容易上手啊!

希望喜歡XNA的人可以一起來研究喔!