`
mmdev
  • 浏览: 12909194 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Windows Phone开发工具初体验

阅读更多

作者:马宁

这是为《程序员》4月期写的文章,是在《双重惊喜——Windows Phone Developer Tools初体验》的基础上增加了一些内容,包括WebBrowser空间、MediaPlayer空间,还有一个非常简单的XNA程序。希望对Windows Phone开发有兴趣的朋友有一些帮助。

Windows Phone开发工具在MIX 2010上火热登场了。Windows Mobile开发者们压抑许久的热情终于爆发出来,对于Windows Phone的华丽转身,开发者们褒贬不一,有人对Silverlight XNA等新技术充满期待,有人对放弃以前版本兼容性、不支持C++开发满腹怨言。

无论如何,Windows Phone为我们带来了新的用户体验、新的开发工具,总比让开发者守着Windows Mobile的老面孔,一起慢慢变老,要好吧?下面,就让我们看看Windows Phone开发工具会为开发者们带来哪些惊喜,呃,或者惊讶。

Windows Phone开发工具的社区预览版(CTP)可以在MSDN上下载。其中包括Visual Studio 2010 Express for Windows Phone, Windows Phone模拟器, Silverlight for Windows PhoneXNA 4.0 Game Studio。目前,Windows Phone开发工具只能安装在Windows 7Vista SP2上,还需要显卡支持DirectX 10

打开VS 2010后,我的感觉喜忧参半,喜的是Windows Phone提供了两种不同的开发平台:Silverlight for Windows PhoneXNA 4.0,忧的是,以前Windows MobileC++.NET Compact Framework都用不上了。所以,以前的Windows Mobile程序员也要经历一个痛苦的转型过程。

接下来,我们就看看Windows Phone带来的双重惊喜吧!

Silverlight for Windows Phone

Silverlight for Windows Phone险些沦为一个笑话,Windows Mobile程序员在抱怨,Symbian上的Silverlight都出来了,Windows Mobile上的Silverlight在哪里?这次,Silverlight for Windows Phone来了,而且所有Windows Phone上的应用必须用Silverlight来写。

Silverlight最大的优势在于与Expression Blend的无缝整合,可以快速设计出非常漂亮的用户界面,将程序员从繁琐的UI开发中解放出来。而且Silverlight for Windows Phone不再是Silverlight的子集,而是支持Silverlight的全部功能。这样的好处是,已有的Silverlight程序很容易移植到Windows Phone手机上。

在程序菜单的XNA Game Studio 4.0下打开VS 2010,创建一个新工程,在Visual C#下找到三个模板,选择”Windows Phone Application”

不知道Phone List Application是啥,看起来Windows Phone的界面会以List为主了。点击OK后,会直接进入IDE的主界面:

似曾相识,左边是工具栏,可以拖拽控件到UI设计器上,与XAML界面对应。根据示例程序,我准备编写一个浏览器和媒体播放器,首先是从Toolbox中将MediaElementWebBrowser控件拖拽到UI设计器上。

为了播放多媒体文件,我们还要在Solution Explorer里将wmv文件添加到工程里。做法和Windows Mobile工程一致,选择Content类型,wmv文件会和工程一起发布。

接下来就是编写代码了。MediaElement组件需要设置Source属性,然后调用Play方法。而WebBrowser选择Navigate方法来访问指定网站。

private void button1_Click(object sender, RoutedEventArgs e)

{

textBlockListTitle.Text = textBox1.Text;

if (Convert.ToBoolean(checkBox1.IsChecked))

{

webBrowser1.Visibility = Visibility.Collapsed;

mediaElement1.Visibility = Visibility.Visible;

// play Video

mediaElement1.Source = new Uri("Wildlife.wmv", UriKind.Relative);

mediaElement1.Position = TimeSpan.FromMilliseconds(0);

mediaElement1.Play();

}

else

{

mediaElement1.Visibility = Visibility.Collapsed;

webBrowser1.Visibility = Visibility.Visible;

// Browser

webBrowser1.Navigate(new Uri(textBox1.Text, UriKind.Absolute));

}

}

代码编辑完成后,选择Windows Phone Emulator作为目标设备。直接按F5Windows Phone Emulator会被启动。

Silverlight for Windows Phone类库中增加了很多Phone独有的功能。Microsoft.Phone的命名空间下,包括Phone、电话本、电子邮件、CameraBing地图、Marketplace、浏览器和搜索等功能。Microsoft.Device.Sensors中包括各种各样的传感器,其中包括重力感应。Silverlight中还包括了LocationPush Notification等独有功能。

我的程序运行起来就是下面这个样子。程序带有强烈的Zune风格,不但有标题,而且还有明显的Block List Title。另外就是输入法,带有明显iPhone的痕迹,不过对电容屏的支持看来不是问题了。

我还没有仔细看Windows Phone Emulator的实现机制,不过从启动速度来看,绝对不是把整个Windows Phone放在模拟器里执行了。原来Windows Device Emulator那个基于三星2410的小身板估计也跑不起来。反正也是Managed Code,估计又是JIT编译那套。恍惚间,仿佛回到了Pocket PC 2002的年代。

Windows Phone新界面

既然把Windows Phone Emulator起来了,我们就顺便参观下Windows Phone的新界面吧。点左边的Back键,会将应用程序的Debugger断掉,不知道程序是否退出了。点中间的Win Button,会回到主界面。

不过主界面上只有IE一个图标。Windows Phone模拟器中还没有包括其他的系统功能,比如电话、电子邮件、搜索等。模拟器也没有办法模拟重力感应、Location定位服务。希望到Windows Phone开发工具正式发布时,这些系统功能都可以被支持。

IE的用户体验非常好,一开始新手发蒙,没找到地址栏,后边就非常顺利了。无论是页面缩放时的平滑动画,还是输入时切换到适当大小的设计,都非常顺手。特别是Multi-Tab的设计,感觉非常舒服。特意试了Google Map,显示一切正常。智能手机时代,有一个好的浏览器,其实就成功了一半。

哦,还有一点,我在Windows Phone Emulator里没有做任何配置,就可以上网了。

XNA 4.0

在移动开发界,XNA还不是一个响亮的名字,但是在游戏开发界,Xbox 360上的XNA则是泰山北斗级的开发技术。XNA不仅仅是一个.NET的游戏开发平台,还包括了很多支持Xbox Live服务的功能,比如,Avatars技术支持在游戏中显示用户设计的形象。希望这项技术能够和同名电影一样,改变移动游戏开发的历史。

Windows Phone支持的是XNA 4.0,与Zune HD上的XNA 3.1有啥区别?支持3D游戏!目前我们看到的这个XNA 4.0预览版只支持Windows Phone开发,不支持WindowsXbox 360的游戏开发。

Silverlight for Windows Phone是典型的事件驱动型应用程序。而XNA是由时间驱动的应用程序,这也是游戏开发技术的典型特点。每隔固定时间,系统会触发Update事件,使程序得以更新。

不那么多废话了,创建个XNA 4.0的新工程吧!

选择Windows Phone Game就好了。IDE环境下没有界面编辑器,需要程序员通过代码来实现UIXNA程序的结构非常简单,程序员只需要实现几个简单的方法,就可以实现一个简单的XNA程序了。这些方法包括Initialize初始化方法、LoadContent加载文件、Update更新内容和Draw绘制等方法。下面是示例代码片段:

protected override void LoadContent()

{

// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch(GraphicsDevice);

texture1 = Content.Load<Texture2D>("winphone");

texture2 = Content.Load<Texture2D>("winphone");

soundEffect = Content.Load<SoundEffect>("Windows Ding");

spritePosition1.X = 0;

spritePosition1.Y = 0;

spritePosition2.X = graphics.GraphicsDevice.Viewport.Width - texture1.Width;

spritePosition2.Y = graphics.GraphicsDevice.Viewport.Height - texture1.Height;

sprite1Height = texture1.Bounds.Height;

sprite1Width = texture1.Bounds.Width;

sprite2Height = texture2.Bounds.Height;

sprite2Width = texture2.Bounds.Width;

}

LoadContent方法中使用Content.Load方法来加载资源文件,这些文件也是作为资源被加载到XNA程序中的。

protected override void Update(GameTime gameTime)

{

// Allows the game to exit

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

// Move the sprite around.

UpdateSprite(gameTime, ref spritePosition1, ref spriteSpeed1);

UpdateSprite(gameTime, ref spritePosition2, ref spriteSpeed2);

CheckForCollision();

base.Update(gameTime);

}

Update方法负责更新元素的位置,进行碰撞检测。如果后退键被按下,则退出程序。

protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

// Draw the sprite.

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);

spriteBatch.Draw(texture1, spritePosition1, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Opaque);

spriteBatch.Draw(texture2, spritePosition2, Color.AliceBlue);

spriteBatch.End();

base.Draw(gameTime);

}

Draw方法对更新后的元素进行绘制。

我们的第一个XNA程序会显示两张图片,这两张图片会在屏幕中运行,运行到边缘时,会反弹回来。

写在最后

Windows Phone开发工具不是完美无缺的,比如Visual Studio启动调试程序的时间比较长,希望这是模拟器的问题,在Windows Phone设备上不是这样。

写完这篇文章,心中最多的还是感慨,我们不应该将Windows Phone视作Windows Mobile的升级了,这是一个全新的手机操作系统。Windows Phone的功能可能没有Windows Mobile丰富,但是他赢得喝彩,靠的只有四个字——用户体验。

凤凰涅磐,Windows Phone的路还很长,但是我们这些紧紧追随的开发者们,要得不就是对未来的一丝憧憬吗。

分享到:
评论

相关推荐

    WindowsPhone开发工具初体验

    WindowsPhone开发工具在MIX2010上火热登场了。WindowsMobile开发者们压抑许久的热情终于爆发出来,对于WindowsPhone的华丽转身,开发者们褒贬不一,有人对Silverlight、XNA等新技术充满期待,有人对放弃以前版本兼容...

    ComponentOne Studio for Windows Phone 2014 V3

    ComponentOne Studio for Windows Phone 简单易学,功能全面,Windows Phone 顶级用户界面开发控件套包; ComponentOne Studio for Windows Phone 包含了超过15个的用户界面控件来实现数据可视化,文档编辑,外观...

    Windows 10 SDK

    将 Windows 10 SDK 和 Visual Studio 2017 结合使用可提供最佳的 Windows 应用生成体验,因为你可以充分利用 Windows 10 创意者更新提供的最新工具和 API。 除了面向 Windows 10 创意者更新之外,此 SDK 还允许你在...

    移动应用开发的教程.txt

    每个平台都有自己的开发语言和开发工具,因此需要先学习相应的知识。 三、学习开发技术 编程语言:根据所选的开发平台,学习相应的编程语言。例如,iOS开发常用的编程语言是Objective-C或Swift,而Android开发则...

    WindowsCommunityToolkit:Windows 社区工具包是帮助程序、扩展和自定义控件的集合。 它简化并演示了为 Windows 10 构建 UWP 和 .NET 应用程序的常见开发人员任务。该工具包是 .NET Foundation 的一部分

    它在构建 Windows 10 体验时简化并演示了常见的开发人员模式。 目标 分支 地位 推荐的包版本 生产 rel/7.0.2 预发布 Beta 测试 主要的 入门 :raising_hands: 有关使用该工具包的更多详细信息,请阅读页面。 文档...

    WindowsCommunityToolkit:Windows社区工具包是辅助功能,自定义控件和应用程序服务的集合。 它简化并演示了开发针对Windows 10的UWP和.NET应用程序的常见开发人员任务。该工具包是.NET Foundation的一部分

    在构建Windows 10体验时,它简化并演示了常见的开发人员模式。 目标 科 状态 推荐包装版本 生产 相对版本/6.1.0 发行前Beta测试 主 入门 :raising_hands: 请阅读页面,以获取有关使用该工具包的更多详细信息。 ...

    国泰安-ibm移动应用平台整体解决方案

    的 SDK使跨平台(iOS、Android、Blackberry、Windows 8、Windows Phone、和 JavaME) 移动应用开发教学变得更加容易。Worklight 优化架构支持代码复用,提供了符合各种目标 环境设计要求的出色学习体验与教学体验。...

    DevExpress_NET_v20.2.6.0.rar

    WPF工具将为开发Windows客户端应用程序提供下一代演示系统,并提供一些令人惊叹的视觉体验。它有Windows 10应用程序控制,这将允许你创建壮观的商业解决方案,利用Windows 10最好的部分。CodeRush是一个可以消除重复...

    CrossMobile:使用Java创建本机iOS,Android,Windows Phone和桌面应用程序。 编写一次,并生成复杂的多平台应用程序

    桌面:采用类似于Android后端的技术,尽可能多地重用Java代码,从而为桌面提供与独立Java(基于JAR)应用程序相同的体验。 UWP :在工具的帮助下,还可以创建本机UWP应用程序,并使用XMLVM工具将其移植到Ob

    爱方格手机助手 v2.3.1

    爱方格手机助手是一款专业的Windows Phone 手机工具 功能介绍 1、手机资源管理 手机上的图片、音乐、视频等资源全管理,无需越狱,一代机和二代机通吃。 2、应用下载和管理 自带应用商城,海量应用一键下载安装...

    爱方格手机助手 v2.3.1.zip

    爱方格手机助手是一款专业的Windows Phone 手机工具 功能介绍 1、手机资源管理 手机上的图片、音乐、视频等资源全管理,无需越狱,一代机和二代机通吃。 2、应用下载和管理 自带应用商城,海量应用一键下载安装...

    移动应用UI设计模式

    , 导航:主要导航和次要导航模式, 表单:改变全行业不良的表单设计习惯, 表格和列表:只显示最重要的信息, 搜索、分类和过滤:让这些功能易于使用, 工具:营造直接交互的体验, 图表:借鉴基本图表的经典设计理念, ...

    基于android的游戏开发开题报告.doc

    据市场调查,智能手机市场已经形 成了二足鼎力的态势,安卓和苹果的IOS作为领军者遥遥领先于windows phone系统。同时各种android应用程序已经有了比较明朗的发展前景,尤其以手机游戏 这个亮点受到广泛的关注和喜爱...

    基于android的游戏开发开题报告(1).doc

    据市场调查,智能手机市场已经形 成了二足鼎力的态势,安卓和苹果的IOS作为领军者遥遥领先于windows phone系统。同时各种android应用程序已经有了比较明朗的发展前景,尤其以手机游戏 这个亮点受到广泛的关注和喜爱...

    苹果 HEIC 转换器 Aiseesoft HEIC Converter 1.0.12.zip

    有了这个强大的 HEIC 转换工具,您可以在 Windows 或 Mac电 脑上将所有 HEIF(.heic)照片转换为 JPG/JPEG 或 PNG 格式,无需任何麻烦。 Aiseesoft HEIC Converter 中文版Aiseesoft HEIC Converter 中文版 HEIC vs ...

    Android程序设计基础

     如今,市场上已经有了许多移动平台,包括Symbian、iPhone、Windows Mobile、BlackBerry、Java Mobile Edition和Linux Mobile(LiMo)等。当我向别人说起Android时,他们的第一个疑问通常是:我们为什么还需要另一...

    chrome.exe

    另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,...

Global site tag (gtag.js) - Google Analytics