天天看點

深度解析Windows Phone 7 開發

  近兩年來,智能手機市場似乎已經成為iPhone、Android争妍鬥豔的舞台,Windows Mobile因為老舊的構架,以及那些換湯不換藥的更新,越來越多的Windows Mobile使用者紛紛轉投其他智能手機平台門下,其市場占有率現如今僅存8%的戰果,不但被iPhone拉下第三的寶座,就連Android 4%的市場佔有率也已逐漸逼近Windows Mobile。在這種前有狼後有虎的狀況下,微軟對其下一代智能手機平台Windows Mobile 7的研發工作卻愈發地低調和沉默,就在各家手機硬體廠商和衆多Windows Mobile粉絲耐心磨盡前,微軟終于在虎年的大年初二(2 月15日)揭開了Windows Phone 7的廬山真面目。

深度解析Windows Phone 7 開發

Windows Phone 7 廬山真面目

  從微軟在MWC透露的資料和視訊來看,我們知曉 Windows Phone 7 系統和以往的Windows Mobile真是做了徹頭徹尾的改進。Windows Phone7将從6大核心出發,分别是:People(聯系人)、Pictures(圖檔)、Games(遊戲)、Music + Video(影音)、Marketplace(軟體商店)與 Office(辦公)。操作上也發生了很多的改變,整個手機上隻有三個按鈕:後退、開始、與搜尋,觸摸屏與多點觸控已經成為Windows Phone 7首選的互動方式。并且首頁也已經改用圖示界面,可以說微軟已經徹底抛棄了以往 Windows Mobile 傳統的界面與設計理念。

  作為Windows Mobile的開發人員,我則更加關注Windows Phone 7在開發技術和開發理念上的改變。早在2005年左右微軟就已經開始Windows Phone 7的規劃和研發,但是Windows Phone 7在開發6年之久依然遲遲未出,除了受到iPhone和Android的影響進行了重新設計外,還受到微軟各項技術向Windows Phone 7平台的遷移戰略拖累。

  Silverlight、XNA主導Windows Phone 7開發平台

  3月7号微軟官方部落格已經公布了Mix10會議上14 場和 Windows Phone 7應用和遊戲開發相關的Sessions。他們是:

  “Changing our Game”之Windows Phone 7 Series介紹

  開發 Windows Phone 遊戲

  開發高性能3D Windows Phone遊戲

  富移動網站的設計與開發

  Windows Phone 7 Series應用平台概覽

  Windows Phone使用者界面及設計語言

  Microsoft Silverlight應用開發介紹

  開發基于Silverlight的Windows Phone應用(第一部分)

  開發基于Silverlight的Windows Phone應用(第二部分)

  Windows Phone應用平台架構

  Windows Phone的XNA遊戲開發及調試工具

  Windows Phone應用和遊戲的分發和盈利

  Windows Phone的Silverlight性能

  Silverlight 及 Windows Phone 7 應用的單元測試架構

  由此可知Silverlight、XNA将成為Windows Phone 7在應用和遊戲方面的主要開發方式。在以往的Windows Mobile應用程式開發上,如何實作一個較好的界面呈現對程式員來說是非常頭痛的事情。在微軟提供的.Net Compact Framework開發方式上,内置的控件不但實用性較差,而且在控件的呈現效果也非常簡陋,微軟對此的解釋美其名曰是希望開發人員對所缺乏的控件進行自定義擴充。但是自定義控件對于大多數程式員來說是個可望不可即的技術活,而iPhone和Android之是以在界面呈現上遠勝于Windows Mobile,就是因為這兩個開發平台在建立起始就為程式員提供了大量功能強大、靈活度高且設計精美的内置控件,為此開發人員就可以将精力專注于應用程式的邏輯設計和界面布局上,不用再糾纏于控件的設計和編碼上。

  慶幸的是Windows Phone 7的研發人員終于意識到這個問題,為此Silverlight被引入了Windows Phone 7平台。Silverlight對于很多隻專注于Windows Mobile的開發人員來說似乎有點陌生,為此筆者這裡簡單解釋下Silverlight相對應傳統的Windows Form開發的巨大優勢。在Silverlight中主要是使用一種名為XAML的标記語言和布局界面和設定控件,XAML不但在界面界面上極具靈活性,而且相對應傳統的程式設計語言實作界面來說,亦是簡便了許多。

  拿一個最簡單的例子來說,在.Net Compact Framework中,Button可謂是我們最常用的控件之一,但是Button控件的功能可謂是非常雞肋,不能為按鈕添加圖檔背景就是一個硬傷,更别提按鈕的懸停、按下、釋放效果,以及按鈕的梯度顔色漸變等功能支援了。是以最簡單地設定一個Button按鈕,最起碼也是需要如下的C#代碼支援:

Button myBtn = new Button();

myBtn.Background = Color.Green;

myBtn.Text="Submit";

myBtn.Click += new System.EventHandler(OnClickHandler);

  而對于XAML僅需一行代碼可以将上面的代碼化繁為簡:

<Button Name=“myBtn” Click="OnClickHandler" Background="Green" Content="Submit" />

如果XAML這種化繁為簡的本事還不足稱道的話,那麼你想象過在一個按鈕控件中實作動畫效果,以及作為容器添加其他控件的能力嗎?XAML為建構僅受限于想象力的程式界面提供了強有力的支援。為此在Windows Phone 7的應用程式開發上, XAML的引入将成為必然,Windows Phone 7的應用程式界面效果将和傳統的Window Mobile程式那種有棱有角和千遍一律的界面存在明顯的差別。

深度解析Windows Phone 7 開發

Zune HD版的facebook采用XAML布局的界面效果

  3月7号在 TechEd 中東會議的主旨演講上,微軟示範了一款跨 Windows 7, Windows Phone 7 Series 和 Xbox 360 平台的冒險類遊戲:在 Windows Phone 7 上繼續 Windows 7 儲存的遊戲,最終在 Xbox 360 上完成任務,這聽起來是不是非常震撼。手機、PC、Xbox之間的通用遊戲和通用存檔意味着什麼,意味着我們可以在地鐵或者公交上使用Windows Phone 7随時随地遊戲外,而後還可以将Windows Phone 7上的遊戲存檔通過網絡直接上傳到遊戲體驗效果更好的Xbox 360或者PC上“再續前緣”。

深度解析Windows Phone 7 開發

跨 Windows 7, Windows Phone 7 Series 和 Xbox 360 平台的冒險類遊戲—Platformer

  而實作上面這一切都源于在Windows Phone 7平台上引入的XNA遊戲架構。XNA起源于遊戲界大名鼎鼎的DirectX,是微軟對于C#版DirectX的修正和擴充版本。起初該工具也隻是面向業餘遊戲程式員所設計的遊戲開發套件。第一版的XNA隻支援Xbox和PC兩個平台,在XNA 3.1版中又引入了對Zune的支援。但是XNA遲遲未表态何時支援Windows Mobile平台,以至于衆多的遊戲開發人員認為微軟又一次抛棄了Windows Mobile。現如今微軟終于給了我們一個定心丸,XNA将成為Windows Phone 7主要的遊戲開發平台。

  XNA同以往的遊戲開發套件相比,遊戲的開發效率有巨大的提升,成本和時間亦大副縮短,這是XNA最大的優勢和賣點。其實XNA和衆多的.Net Compact Framework程式員來說可謂是同宗同源,因為XNA本身就是構架于.Net Compact Framework,隻不過該版本的.Net Compact Framework為支援Xbox晶片進行相應的移植和優化。是以大多數.Net Compact Framework開發人員可以快速切入XNA的學習和開發,XNA的基礎庫也和Widows Mobile的.Net Compact Framework基本保持一緻,隻是額外添加了一些針對遊戲開發相關的類庫,是以Windows Mobile開發人員在遊戲開發上的學習和遷移難度極低,無需又一輪無根基的修煉過程。

  除此之外,使用XNA的好處就是C#的快速開發優勢,縱觀現在Windows Mobile上的遊戲開發方式主要有如下三類:

  1、 Windows Mobile内置的DirectX Mobile、GAPI或GDI。

  2、 Develant Technologies公司的GapiDraw套件

  3、 OpenGL ES

  現如今這些開發方式都已經有了相應的.NET版本封裝,于是乎越來越多的Windows Mobile遊戲都開始采用C#+.Net Compact Framework以及上述套件進行開發,據筆者所知的就有Flight Commander、Tower Defense等數十款,而且遊戲效果亦可與那些使用C++開發的遊戲媲美。但是上面三種遊戲開發方式各成體系,支援的功能也各有長短,是以選擇何種開發套件頗為為難。再者,OpenGL ES和GapiDraw并無官方版的.NET封裝,是以第三方的封裝不可避免地存在一些缺陷,導緻遊戲開發時才意識到問題。最後,就是這三種遊戲開發方式的接口并不一緻,是以我們每次都無法避免地需要重新地學習,開發經驗難以最大化地得到複用和積累。

深度解析Windows Phone 7 開發

 .Net Compact Framework開發出的遊戲效果

 而有.Net Compact Framework 開發經驗的程式員在使用XNA開發遊戲時雖然也存在一個重新學習過程,但是因為XNA底層封裝了遊戲開發中常用和較複雜的實作,是以極大地簡化了遊戲開發的難度。我們可以使用很少的代碼就可以實作遊戲動畫、沖突檢測和場景的卷軸滾動等問題。除此之外,我們還開發的遊戲無需太大的改動就可以運作在PC、Xbox、Zune和Windows Phone 7平台上,一舉多得,何樂不為!

繼續閱讀