這部份算官方文件的一部分,因為剛好也在學習中,所以就把所知道的東西分享出來。

WP7最低解析度800*480。如果要從ZUNE的專案改到WP7,解析度部分需要調整。(ZUNE HD 480*272)(ZUNE240*320)
針對解析度調整的部分,有兩種方式可以設定:
1. 由美術手動調整材質資源的大小(像是貼圖的大小調整)。
2. 由內建的硬體調整(也就是更改目前顯示的解析度)。對於上述所說的方法,第一種是不太建議的,通常都是使用第二種方法來做解析度的調整。
要調整解析度只需要更改preferred back buffer的大小即可,像是:
在Initialize的函數中的程式碼中
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 272;
graphics.PreferredBackBufferHeight = 480;

建立好GraphiceDeviceManager後可以使用graphice的物件來做preferred back buffer大小調整。

解析度調整過後,還需要針對於輸入操作上面做調整。在WP7上面你可以使用觸控或是加速器的資訊來做輸入的操作。
在觸控操作這邊需要手動加入一個標頭檔"Microsoft.Xna.Framework.Input.Touch"
在程式碼的最上方加入using Microsoft.Xna.Framework.Input.Touch,如此一來就可以開始寫觸控上面的操作。

在加速器的部分,這部分主要是由Microsoft Windows Phone Developer Tools CTP所管理的,並非XNA的framework內容
,所以需要引入Microsoft.Devices.Sensors來做加速器的資訊取得。

在WP7的儲存資源部分與ZUNE上有些微的不同,原本的在XNA 3.1之前都是使用StorageContainer.TitleLocation來設定儲存的設定。
不過StorageContainer.TitleLocation在4.0當中是已經不被准許的操作(這個方法被移除掉了)
如果要存取檔案的部分,這邊需要使用OpenStream的方式來做存取操作。
EX:
long size;

void openFile()
{
     try
     {
          System.IO.Stream stream = TitleContainer.OpenStream("ship.dds");
          System.IO.StreamReader sreader = new System.IO.StreamReader(stream);
          // use StreamReader.ReadLine or other methods to read the file data

          Console.WriteLine("File Size: " + stream.Length);
          size = stream.Length;
          stream.Close();
     }
     catch (System.IO.FileNotFoundException)
     {
          throw;
     }
}

 

檔案存取的部分,可以用上述方式取得資料。但是,如果要將使用者的資訊儲存在WP7上面的話,需要使用IsolatedStorageFile.GetUserStoreForApplication來存取使用者個別的資料。

創作者介紹
創作者 teexit1224 的頭像
teexit1224

StreamWhite

teexit1224 發表在 痞客邦 留言(0) 人氣()