Windows Phone 7開發教程(3)——XNA下使用MessageBox和軟鍵盤

來源:互聯網
上載者:User

相信未來一段的業餘時間,我都要和XNA為伍了。本來想向3D開發的縱深發展 ,但是遇到了一個實際的問題,就是如何在XNA下顯示MessageBox和Software Input Panel。乾脆先寫出來吧,省得大家遇到這問題時抓狂。

按照為數不多的公開文檔描述,XNA和Silverlight for Windows Phone應該 是基於同一個.NET Compact Framework的CLR。但是,XNA並沒有提供任何使用者控 件、MessageBox和軟鍵盤等,也不能直接調用Silverlight for Windows Phone 的類庫。這樣勢必為XNA製造了很多人為的障礙。但調用MessageBox和Software Input Panel的後門,XNA還是給我們留下了,這就是 Microsoft.Xna.Framework.GamerServices命名空間下的Guide類,類描述如下:

http://msdn.microsoft.com/en- us/library/microsoft.xna.framework.gamerservices.guide.aspx

該類不但可以調用MessageBox和軟鍵盤,還能夠調用Marketplace、XBox Live等表單。不過,值得注意的是,Guide類提供的方法都是非同步呼叫,而非同 步調用,這也好理解,遊戲的處理過程是以時間驅動的,所以任何操作不應該阻 塞住遊戲主線程。

Guide類調用MessageBox和軟鍵盤的描述在這裡:

http://msdn.microsoft.com/en-us/library/ff827869.aspx

http://msdn.microsoft.com/en-us/library/ff827868.aspx

但MSDN文檔還是有一些瑕疵,按上面提供的方法會產生Exception,所以我在 下面給出修改後可以啟動並執行方法。運行環境基於VS 2010 + Windows Phone 7 SDK RTW版。

調用MessageBox

建立Windows Phone 7中XNA 4.0的工程,然後,我們在 Update方法裡添加對於MessageBox的調用。當然,大家請不要認為把MessageBox 加到Update裡正確的,這樣會造成MessageBox不斷彈出。我只是為了簡化代碼, 才這麼做的。

protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
List<string> MBOPTIONS = new List<string>();
MBOPTIONS.Add("OK");
MBOPTIONS.Add("CANCEL");
if (!Guide.IsVisible)
Guide.BeginShowMessageBox("test", "hello, XNA", MBOPTIONS, 0, MessageBoxIcon.Alert, new AsyncCallback(RespCallback), null);
base.Update(gameTime);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.