天天看點

第一部分:基礎知識(第一章)

第一部分:基礎知識(第一章)

第一章

Hello,Windows Phone 7

有時一件事情看上去沒有朝着你預期的方向前進,吧你隻需要清除過去的陰影,深吸一口氣,并嘗試以一個新的姿态或新的想法。在高爾夫運動中,它被稱為“重發一球”,在校園運動中,它被稱為“重做”,而在計算機行業,我們稱之為“重新啟動。”

最近的一個重新開機是微軟已經重新啟動其新的手機市場方案。憑借其簡潔的外觀,醒目的字型,以及新的組織模式,微軟Windows Phone7不僅代表了與過去的Windows Mobile決裂也有别于目前市場的其他智能手機。 Windows Phone7的裝置會由多個手機制造商和網絡供應商共同提供。

對于開發人員,Windows Phone 7也令人振奮,因為它支援兩種流行的和現代的程式設計平台:Silverlight和XNA。

Silverlight是Windows Presentation Foundation(WPF)的一個基于用戶端的子集,其給了Web程式員前所未開發能力和控制力,允許在多個平台和浏覽器下實作高品質的文字,向量圖形,媒體,動畫組合,複雜的使用者界面和資料綁定在。 Silverlight通過Windows Phone7延伸到移動裝置。

XNA的三個字母代表“新的架構”,他是微軟的遊戲平台,同時支援二維為基礎,與傳統的3D遊戲的閉環結構的圖形。雖然XNA大都與開發Xbox 360遊戲機有關,不過開發人員還可以使用XNA針對PC本身,以及微軟的經典音頻播放器Zune的高清開發。

無論是Silverlight或XNA都是非常好的WindowsPhone7的開發平台,但程式員有一個選擇。而這一點,就是我們通常所說的“一個富人的尴尬。”

針對Windows Phone7

所有的Windows Phone7應用程式都用.NET托管代碼編寫。雖然在這本書中的示例程式是C#程式設計語言編寫的,你也可以用Visual Basic.NET編寫Windows Phone 7應用程式。你可以免費下載下傳包含了NA Game Studio 4.0和手機模拟器的Microsoft Visual Studio 2010 Express for Windows Phone,并與Visual Studio 2010內建。視覺效果和動畫您可以使用開發Silverlight的應用程式的Microsoft Expression Blend。

XNA和Silverlight為Windows Phone 7共享了一些庫,你可以在Silverlight中使用XNA的一些庫,反之亦然。但你不能建立一個程式,混合來自這兩個平台的視覺效果。也許這将有可能在未來,但不是現在。在建立一個Visual Studio項目,你必須決定您的價值百萬美元的想法是一個Silverlight程式或一個XNA程式。

通常你會将選擇Silverlight來編寫你的應用程式或實用工具。這個方案由一些标記和代碼組合。Extensible Application Markup Language稱為可擴充應用程式标記語言,簡寫為XAML和發音為“zammel。”XAML主要用于定義或布局使用者的界面控制和面闆。代碼隐藏檔案進行一些初始化和邏輯,但一般都是處理控件的事件。 Silverligh是編寫WindowsPhone的富網際網路應用(RIA),包括媒體和網站的最佳選擇。Silverlight for Windows Phone is a version of Silverlight 3 excluding some features not appropriate for the phone, but compensating with some enhancements.

XNA主要是用于編寫高性能的遊戲。對于2D遊戲,你定義精靈和周圍的背景位圖;3D遊戲你定義三維空間模型。XNA内在了包括在螢幕上移動,使用者輸入,圖形對象,同步行等遊戲常用的能力。

基于Silverlight開發應用程式和XNA開發遊戲是基于他們的友善性,不過對于這樣點并沒有限制。你當然可以使用Silverlight和編寫遊戲,你甚至可以編寫使用XNA傳統的應用程式,雖然這樣做有時可能具有挑戰性。

特别注意的是,Silverlight可以編寫一些使用矢量圖形而不是點陣圖形并且對使用者響應不高的遊戲的理想選擇。比如一個俄羅斯方塊式的程式可能在Silverlight的工作相當不錯。事實上,您會發現XNA更難實作Silverlight的應用。比如實作一個清單框這樣對程式員來說很 “簡單”的事情,在NXA下簡直是一個酷刑

這本書的最初幾個章節是将Silverlight和XNA在一起描述,後期這本書将分為兩個不同的平台。我懷疑一些開發人員始終堅持Silverlight而不會還要去學習其他環境。我希望這是一種不常見的現象。好消息是Silverlight和XNA是如此的不同,你可以在他們之間并行穿毫不混淆!

微軟一直将Silverlight定位為前端或雲“界面”,是以雲服務和Windows Azure的Windows Phone7開發的重要組成部分。Windows Phone是一個可以利用位置感覺并獲得地圖以及Bing搜尋和Windows Live服務的“雲就緒“程式,Xbox Live也是可用的雲服務之一,這使得XNA的網上多人遊戲方案,也可以通過Silverlight的應用程式通路。

Windows Phone Marketplace提供你的Windows Phone7應用銷售服務,注冊服務,并證明方案滿足可靠性,效率和良好的行為的最低标準部署。

Windows Phone 7與過去的Windows Mobile完全不同。但是,由于對Silverlight、XNA對C#的支援,是以你在這三種技術的投資時得到了延續和平衡。Silverlight和XNA已經被證明是強大的和流行的平台。許多熟練的程式員已經通過了解網上社群的資訊熟悉了其中一個架構或兩個。 C#中已成為許多程式員最喜歡的語言(包括我自己),開發人員可以使用C#共享Silverlight和XNA之間的方案和庫。

硬體基座

有經驗的開發人員比較過去的Windows Mobile裝置後會發現微軟的Windows Phone7政策的重要轉變。微軟開始非常給力的定義硬體規格,通常稱為“基座”。

Windows Phone7裝置各将有一個一緻的螢幕大小。 (第二個螢幕規模預計在未來。)許多其他的硬體功能,保證每個裝置上存在。

手機的正面由一個多點觸摸顯示屏和三個一般在顯示屏下方的行上的按鈕組成。從左至右,這些按鈕叫傳回,開始和搜尋:

第一部分:基礎知識(第一章)

l 傳回:程式可以使用這個按鈕實作他們的導航需要,這個很像Web浏覽器的回退按鈕。到達了程式的首頁,該按鈕會導緻程式終止。

l 開始:這個按鈕将進入手機的開始螢幕。程式運作時不能用。

l 搜尋:改按鈕來啟動搜尋功能。

初始發行的Windows Phone7裝置的有一個480 × 800像素的顯示空間。在未來,320 × 480像素的螢幕也将發行。Windows Phone7目前沒有其他螢幕大小選擇的計劃,是以顯然這兩種手機的螢幕尺寸将有非常重要的地位

從理論上講,最好的程式應該适應任何螢幕尺寸,但是這并不總是可行的,尤其是對遊戲開發。你可能會發現自己專門針對這兩種螢幕尺寸進行路徑邏輯和布局出來,你必須依賴不同的XAML檔案。

一般我們簡稱為“大螢幕“和“小螢幕“。兩者的最大螢幕的水準和垂直方向的共同點是160,是以你可以想像,作為160像素平方倍數的兩個畫面:

第一部分:基礎知識(第一章)

我用肖像模式(portrait mode)描述這些螢幕,因為portrait mode通常是智能手機的預設設計。原來的Zune的螢幕是240 × 320像素的Zune HD是272 × 480。當然,手機可以旋轉,将螢幕橫向顯示。某些程式可能需要手機在一定的水準方上。

你完全可以控制你需要支援的方向。預設情況下,Silverlight應用程式以portrait mode呈現,但是你可能會需要你的Silverlight應用程式調整自己的方向變化。新的事件支援,可專門用于檢測方向的變動,有些方向變化是自動處理的。與此相反,遊戲程式員通常可以強加給使用者一個特定的方向。XNA程式預設使用風景模式(landscape mode),但它很容易重寫。

在縱向模式下,小螢幕是一個老式的VGA螢幕的一半(即640 × 480)。在橫向模式下,有一個大螢幕的WVGA尺寸,有時也被稱為(“寬VGA”)。在橫向模式下,小螢幕的高寬比3:2或1.5,大螢幕是五時03分或1.66長寬比...。這些都不符合電視縱橫比,标準清晰度4:3或1.33 ...和高清晰度的是16:9或1.77 ...是。 Zune的高清螢幕的寬高比為16:9。

繼續閱讀