WP7 XNA 使用Guide輸入文字、顯示訊息與試用版測試

WP7 XNA 使用Guide輸入文字、顯示訊息與試用版測試

現在我們來介紹Guide物件,他有很多功能,而最容易用到的就是輸入文字和顯示訊息了。

如果你在wp7遊戲的xna遊戲裡想要讓使用這輸入文字,就必須用到Guide.BeginShowKeyboardInput這個函式,

通常的用法如下

	   1:  protected override void Update(GameTime gameTime) {
	   2:      if (!Guide.IsVisible) {
	   3:          Guide.BeginShowKeyboardInput(PlayerIndex.One, "Title", "Description", "DefaultText", CallbackFunction, null);
	   4:      }
	   5:   
	   6:      base.Update(gameTime);
	   7:  }
	   8:   
	   9:  private void CallbackFunction(IAsyncResult ar) {
	  10:      string text = Guide.EndShowKeyboardInput(ar);
	  11:  }

 

由於遊戲的Update是會不斷執行的,所以要由Guide.IsVisible來檢查是否已經顯示了。

接著呼叫的BeginShowKeyboardInput 是非同步呼叫,參數分別是

 

PlayerIndex 玩家的編號,手機的話一定都是PlayerIndex.One
Title 輸入視窗的標題
Description 輸入視窗的說明內容
DefaultText 輸入格預設的文字
Callback 回呼函式
State 使用者想要傳送的物件

而呼叫出來的畫面如下

image

按下OK或Cancel就會呼叫會呼函式,而回呼函式藉由Guide.EndShowKeyboardInput(ar)取得輸入的資料。

 

另外一個常用的就是顯示訊息。用法通常如下

	   1:  protected override void Update(GameTime gameTime) {
	   2:      if (!Guide.IsVisible) {
	   3:          List<string> buttons = new List<string>();
	   4:          buttons.Add("Yes");
	   5:          buttons.Add("No");
	   6:          Guide.BeginShowMessageBox("Title", "Text", buttons, 0, MessageBoxIcon.Alert, CallbackFunction, null);
	   7:      }
	   8:   
	   9:      base.Update(gameTime);
	  10:  }
	  11:   
	  12:  private void CallbackFunction(IAsyncResult ar) {
	  13:      if (ar.IsCompleted == true) {
	  14:          int? index = Guide.EndShowMessageBox(ar);
	  15:      }
	  16:  }

 

Guide.IsVisible是一樣的意思,BeginShowMessageBox的參數分別是

Title 訊息的標題
Text 訊息文字
Buttons 按鈕
FoucsButton 預設的按鈕
Icon 訊息的屬性
Callback 回呼函式
State 使用者想要傳送的物件

顯示Message一定要有按鈕,而且規定1或2個,加入按鈕的方法就是用一個string的list,如上面程式碼的3,4,5行,List裡的文字就是Button上面顯示的文字

第14行就是取得按鈕的索引,如果使用者不是案MessageBox的按鈕離開,Guide.EndShowMessageBox(ar)就會回傳null,否則就是回傳按了哪一個按鈕的索引。

最後顯示出來的畫面如下

image

輸入文字和顯示訊息在遊戲中也算是常用解容易的,Guide也可以用來檢查遊戲是不是試用版,

就是靠Guide.IsTrialMode屬性,當遊戲為試用版的時候就會回傳ture。

但是如果想在開發程式的時候測試試用版,我們可以用Guide.SimulateTrialMode來模擬試用版,

只要把Guide.SimulateTrialMode 設成ture,Guide.IsTrialMode也會變成ture,這樣一來就很容易測試了。