基于Visual Studio2010开发Windows phone7新体验--CSDN技术专家眼中的Windows phone7

        


在智能手机行业,Windows Mobile智能操作系统的市场正在被iPhone和Android蚕食。iPhone最先将多点触摸引入IT行业,iPhone以及苹果网络应用程序商店获得巨大的成功,乔布斯因为iPhone走出低谷。许多程序员都在苹果网店成功淘金。Google推出的Android也不断发展壮大。移动互联网的发展一日千里,微软这个IT业强悍的巨无霸已经落后了,为了抢占未来移动互联网,看着自己不争气的Windows Mobile,,在MWC 2010大会发布了Windows Phone 7智能操作系统,自己推出的 Windows 7取得巨大的成功,微软希望7成为其幸运数字,希望新推出的Windows Phone 7智能操作系统能像PC操作系统Windows7一样横行天下。

 


Windows Phone 7得到了全世界多家手机/硬件厂商和电信运营商的大力支持,这其中包括:高通、戴尔、LG、三星、Garmin-Asus、HTC、HP、索尼爱立信以及东芝等等,还有包括沃达丰、T-Mobile、Verizon、AT&T、Orange、Sprint等等运营商。LG、三星、华硕已经分别推出基于Windows Phone 7的手机。

目前全世界仅有25%的WM手机用户通过手机访问互联网,Windows Phone 7投入使用之后将会产生巨大的改变,这款操作系统的全新用户体验将会努力争取另外75%的用户来使用手机访问互联网。Windows Phone 7的出现就是模仿iPhone,上网功能及其丰富。Windows Phone 7将会和之前的WM系统有所不同,它将为用户提供更为整体的体验,从而提升用户的对于微软的依赖度。最为突出的两点就是Windows Phone 7加入了Xbox Live和Zune的服务,这将使手机成为整个微软产品系列的中心。用户可以通过Windows Phone 7来使用更多的微软服务。Windows Phone 7将整体操作体验的中心转移至用户,用户可以根据自己的需要来设置主界面上的内容,用户还可以通过手机来实现社交网络的信息互通。同时Windows Phone 7加入对电容屏幕和多点触控的支持,这一切都将大大提升用户体验。


Windows Phone 7还加入了对于微软Bing的支持,除了加入专用的搜索按键之外,还能够通过Bing来实现对手机的定位和导航。还能通过Exchange实现通讯录、邮件以及日程表等等常用资料的同步。Windows Phone 7的游戏能力也是非常强悍,运行游戏相当流畅,Windows Phone 7系列的手机可以上通过重力感应和触控屏幕来进行游戏。Windows Phone 7的Xbox Live功能相当强大。

微软通过最新一代手机操作系统Windows Phone 7,将旗下Xbox LIVE游戏、Zune音乐与独特的视频体验、Bing搜索等等整合至手机中,以抢占未来的移动互联网市场。Windows Phone 7甚至支持Adobe Flash ,吸取Windows Vista因为不兼容而失败的教训。

介绍完了Windows Phone 7的新特性,我们步入正轨,我们将体验我们自己开发Windows Phone 7应用程序。我们要像那些在iPhone上淘金的程序员一样在Windows Phone 7上淘金。


微软MIX10大会正式推出了Windows Phone 7 Series 应用和游戏开发工具与Windows Phone 7 Series在线应用商店Windows Phone Marketplace,用户可以使用信用卡购买自己需要的应用程序。新的应用商店将支持运营商计费和广告商投放手机广告,另外还将支持先试后买服务。Windows Phone Marketplace共有应用、游戏、音乐、视频播客等多个分类,并有已安装程序可升级提醒,用户可以在应用商店中浏览类别和名称、查看评级、评论、截图、价格等信息。购买后的应用程序可以设置快捷方式至快速启动桌面。微软透露将于5月发布详细的 Windows Phone 7 系列应用商店政策和指导原则。对于开发者来说,要想在Windows Phone 7软件商店中发布软件,首先要做的就是向微软缴纳99美元的费用,用来开通专用的开发者账户,当然,软件开发者会获得软件的利益分成。现在有包括微软游戏工作室、EA移动在内的多家重量级软件开发商正在为Windows Phone 7 Series开发软件。

Windows Phone 7开发工具下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&displaylang=en

Windows Phone 7 Series 开发工具包括 Visual Studio 2010 Express for Windows Phone、Expression Blend 4 for Windows Phone、Windows Phone 设备模拟器和 XNA Game Studio 4.0。不过这个东西是在线安装,网速慢的程序员们,可得有点耐心!

微软Windows Phone 7开发主页:

http://developer.windowsphone.com/

MIX 2010 Keynote视频:

http://www.microsoft.com/presspass/events/mix/videoGallery.aspx

打开VS 2010后, Windows Phone 7提供了两种不同的开发平台:Silverlight for Windows Phone和XNA 4.0, Windows Mobile程序员要心碎了,现有的Windows Mobile应用将不能在Windows Phone 7 手机上运行.微软基于Windows phone 7开发将与Windows Mobile完全不同。“以前Windows Mobile的C++和.NET Compact Framework都用不上了。所以,以前的Windows Mobile程序员也要经历一个痛苦的转型过程。

    我们来体验Windows Phone 7的开发快感吧!

Silverlight for Windows Phone

Silverlight for Windows Phone险些沦为一个微软的笑柄,一些Windows Mobile程序员抱怨,诺基亚Symbian上的Silverlight都出来了,Windows Mobile上的Silverlight在哪里?呵呵,这次Silverlight for Windows Phone来了,而且所有Windows Phone上的应用必须用Silverlight来写。由于目前还是测试版,暂时不支持中文,所以用英文演示。

1.启动Visual Studio 2010 Express for Windows Phone


 

2.创建一个WindowsphoneCSDN项目


3.创建成功后,插入一个textBox控件,插入一个Webrowser控件,插入一个按钮控件命名为GO,

 


4.双击按钮控件,添加如下代码

 


5.按下F5启动模拟器开始调试,看看那Windows 7的上网特性,用CSDN专家打造的简单型浏览器。这个是竖着看。


然后翻个个,有重力感应,所以自动切换画面,速度还很快!

 


XNA 4.0

可能移动开发者不知道XNA的含义,XNA是开发基于Xbox 360上的游戏的著名开发工具。如今,Windows Phone一开始支持的就是XNA 4.0,相比Zune HD上的XNA 3.1有什么区别?XNA 4.0支持3D游戏! 曾经有不少程序员都曾经因为开发小游戏成功得在iPhone上淘金,我们也要尝试着开始在Windowsphone 7上淘金了。

 

1.创建项目WindowsphoneCSDN,计划搞一个图形对撞的小游戏示范


 

 

 

 

 

2.打开解决方案管理器,选择GameThumbnail.png,将其复制到WindowsphoneCSDNContent 节点(也可以复制自己自行定制的图片,像素为64*64为最佳),并在Windows目录搜索Windows Ding.wav或者自己自行录制一个wav文件,作为游戏的声音文件,并将其作为资源添加到WindowsphoneCSDNContent节点下。


 

3.在WindowsphoneCSDN命名空间下的类,Game1初始化函数Game1()添加下列代码,定义图形的位置,速度,高度,宽度,还定义变量

        Texture2D texture1;

        Texture2D texture2;

        Vector2 spritePosition1;

        Vector2 spritePosition2;

        Vector2 spriteSpeed1 = new Vector2(50.0f, 50.0f);

        Vector2 spriteSpeed2 = new Vector2(100.0f, 100.0f);

        int sprite1Height;

        int sprite1Width;

        int sprite2Height;

        int sprite2Width;

 

        SoundEffect soundEffect;

4. 重载LoadContent方法,每个图形都被赋予一个在屏幕上的高度和宽度,计算每个初始位置。

 

protected override void LoadContent()

{

    //创建一个新的SpriteBatch,可以用来绘制纹理

    spriteBatch = new SpriteBatch(GraphicsDevice);

 

    spriteBatch = new SpriteBatch(GraphicsDevice);

    texture1 = Content.Load("GameThumbnail");

    texture2 = Content.Load("GameThumbnail");

 

    soundEffect = Content.Load("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;

}

5. 重载Draw方法

 

protected override void Draw(GameTime gameTime)

{

    graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

 

    //绘制图形.

    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.Gray);

    spriteBatch.End();

 

    base.Draw(gameTime);

 

}

6. 重载update方法,并添加UpdateSprite方法,CheckForCollision方法

protected override void Update(GameTime gameTime)

{

    // 程序退出

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

        ButtonState.Pressed)

        this.Exit();

 

    // 移动图形

    UpdateSprite(gameTime, ref spritePosition1, ref spriteSpeed1);

    UpdateSprite(gameTime, ref spritePosition2, ref spriteSpeed2);

    CheckForCollision();

 

    base.Update(gameTime);

}

 

void UpdateSprite(GameTime gameTime, ref Vector2 spritePosition, ref Vector2 spriteSpeed)

{

    // 根据时间缩放移动图形

    spritePosition +=

        spriteSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;

 

    int MaxX =

        graphics.GraphicsDevice.Viewport.Width - texture1.Width;

    int MinX = 0;

    int MaxY =

        graphics.GraphicsDevice.Viewport.Height - texture1.Height;

    int MinY = 0;

 

    // 检查反弹

    if (spritePosition.X > MaxX)

    {

        spriteSpeed.X *= -1;

        spritePosition.X = MaxX;

    }

 

    else if (spritePosition.X < MinX)

    {

        spriteSpeed.X *= -1;

        spritePosition.X = MinX;

    }

 

    if (spritePosition.Y > MaxY)

    {

        spriteSpeed.Y *= -1;

        spritePosition.Y = MaxY;

    }

 

    else if (spritePosition.Y < MinY)

    {

        spriteSpeed.Y *= -1;

        spritePosition.Y = MinY;

    }

 

}

//检查图形边界是否重叠

void CheckForCollision()

{

    BoundingBox bb1 = new BoundingBox(new Vector3(spritePosition1.X - (sprite1Width / 2), spritePosition1.Y - (sprite1Height / 2), 0), new Vector3(spritePosition1.X + (sprite1Width / 2), spritePosition1.Y + (sprite1Height / 2), 0));

 

    BoundingBox bb2 = new BoundingBox(new Vector3(spritePosition2.X - (sprite2Width / 2), spritePosition2.Y - (sprite2Height / 2), 0), new Vector3(spritePosition2.X + (sprite2Width / 2), spritePosition2.Y + (sprite2Height / 2), 0));

 

    if (bb1.Intersects(bb2))

    {

        soundEffect.Play();

    }

 

}

7.直接运行,见效果,听音效


 

 

 

 

 

 

其实Windows Phone 7不是 Windows Mobile的升级,这是一个全新的智能手机操作系统。Windows Phone的功能可能没有Windows Mobile丰富,但是他赢得喝彩,靠的只有四个字——用户体验。 相信微软的努力,一定能挽回用户的心,微软也将在未来的移动嵌入式市场这块大蛋糕分得一大块。我们这些错过了iPhone上创富的程序员,一定不能错过Windows Phone 7. Windows Phone 7还有一段较长的路要走,我们且行且努力!

 

 本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

 

你可能感兴趣的:(移动3G技术,windows,phone,7技术)