第一章

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。