作為Hands On Lab的第2課,這個課程的設計是非常經典的,他通過了一個我們非常熟悉的拼圖小遊戲的開發,來向大家展示了Phone7簡單遊戲開發的過程。整個練習做下來十分的流暢,除了遊戲本身的邏輯(這一部分真的很蛋疼啊,本來嘗試著去想去理解這一部分代碼的內容,最後還是放棄了,哎,寫遊戲邏輯代碼的程式員真是傷不起啊。),其他部分都還是比較簡單的的。主要包括以下幾個部分:
1.未處理的異常的處理,主要的目的就是如果應用程式中有未處理的異常,那麼這裡就是防止應用程式崩潰的最後一道防線。可以在項目中的App.xaml(類似Asp.net中的Global.asax)檔案中一個Application_UnhandledException事件來處理,這裡是把異常的資訊顯示到ErrorPage頁面。
在ErrorPage頁面需要放一個TextBox來顯示錯誤。
public partial class ErrorPage : PhoneApplicationPage { public ErrorPage () { InitializeComponent(); } public static Exception Ex; protected override void OnNavigatedTo(NavigationEventArgs e) { ErrorText.Text = Ex.ToString(); base.OnNavigatedTo(e); } }
修改App.xaml.cs中的Application_UnhandledException事件中的代碼
// Code to execute on Unhandled Exceptions private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { if (System.Diagnostics.Debugger.IsAttached) { // An unhandled exception has occurred; break into the debugger System.Diagnostics.Debugger.Break(); } e.Handled = true; Error.Ex = e.ExceptionObject; (RootVisual as Microsoft.Phone.Controls.PhoneApplicationFrame).Source = new Uri("/Error.xaml", UriKind.Relative); }
結果
2.遊戲邏輯 &介面. 遊戲邏輯和具體這裡就不再記錄了,關於Phone7的一些知識都是很普通的API的調用,結果
3.動畫效果. Silveright中的動畫在第一個課程中已經在Blend中做過了,他主要就是一個預先做好的資源,在使用的時候載入就可以了,具體還需要深入學習Silverlight才能體會他的原理。(當你完成拼圖後,圖片會播放動畫,旋轉一圈)
4.狀態儲存
在課程中實現了一個IsolatedStorageHelper的類,用於序列化遊戲的狀態,以便下次遊戲時恢複(俗稱"存檔")關於這一塊也是非常常用和需要深入的內容,可以參考這裡