已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文向你介绍为 Windows Phone 创建一个基本的 XNA 框架应用,完整的代码可从Code Samples for Windows Phone这里下载.注意:下面的过程以 Visual Studio 2010 Express for Windows Phone 开发工具为准。下面我们开始整个开发过程:一. 创建新项目请使用以下步骤创建新项目:1. 首先确认你已经下载并安装 WindowsPhoneSDK。详情请看Installing the Windows Phone SDK.2. 从开始菜单中启动 Visual Studio2010 Express for WindowsPhone ,如果出现了注册窗口,你可以注册或者以后再说。3. 从菜单 File 中选择 New Project 来创建一个新项目4. 如下图所示的新建项目窗口中,展开左边的 Visual C# 模板,然后选择XNA Game Studio 4.0templates.5. 选择Windows Phone Game (4.0)模板,填写项目名称(随便你填什么)你也可以在这里指定项目存放的路径6. 点击确定按钮,将会提示选择 Windows Phone 平台,在这里我们选择Windows Phone 7.17. 点击确定后将创建一个新的项目,并在 Visual Studio 中打开 Game1.cs 文件的源码二. 添加内容在这部分中,我们将添加一些图片和声音文件到项目中。1. 首先确认 Visual Studio 中的解决方案浏览器可见,如果你找不到可以从菜单中View | Other Windows | Solution Explorer中打开2. 我们先添加图形文件,在这里我们使用的是PhoneGameThumb.png文件,该文件默认存放在WindowsPhoneGame1WindowsPhoneGame1WindowsPhoneGame1目录下。你也可以使用自己的图片文件,但这个图片的像素必须是 64 * 64。右击内容节点,在这里我们是WindowsPhoneGame1Content (Content), 然后选择Add | Existing Item. 找到并打开你的图形文件WindowsPhoneGame1WindowsPhoneGame1WindowsPhoneGame1PhoneGameThumb.png然后点击添加,这样图形文件就添加到项目中。在解决方案浏览器中选择图形名称并在属性窗口中查看文件的信息。注意图形对象的Asset Name属性,在这里是PhoneGameThumb.3. 接下来添加声音文件,我们将使用Windows Ding.wav文件,你可以使用 Windows 7 系统中的搜索来找到这个文件,然后拷贝到WindowsPhoneGame1WindowsPhoneGame1WindowsPhoneGame1目录,当然你可以添加自己的其他声音文件,但不能太长时间的声音,一秒钟足够了。右击内容节点WindowsPhoneGame1Content (Content), 选择Add | Existing Item. 找到刚才的声音文件并点击添加,这样就将声音文件添加到项目中。在解决方案浏览器中选择声音文件并在属性窗口中查看对应的Asset Name值为Windows Ding.三. 编写代码接下来我们要开始编写代码来在屏幕中移动两个图像,并检测图像是否有碰撞,并在碰撞的时候播放声音,我们需要做的是: 添加一些变量 利用 LoadContent 来加载图像和声音资源 在屏幕中绘制图像 更新图像的位置并检查是否碰撞要添加到代码如下:复制并粘贴下面的变量到 Game1 类中,将这些变量放在已有的 SpriteBatch spriteBatch 变量后面,这里是一些用来控制图像位置、速度、宽度和高度的变量,还有一个是存放声效的:01Texture2D texture1;02Texture2D texture2;03Vector2 spritePosition1;04Vector2 spritePosition2;05Vector2 spriteSpeed1 =newVector2(50.0f, 50.0f);06Vector2 spriteSpeed2 =newVector2(100.0f, 100.0f);07intsprite1Height;08intsprite1Width;09intsprite2Height;10intsprite2Width;1112SoundEffect soundEffect;然后使用下面的代码替换已有的 LoadContent 方法,该方法加载两次图像:01protectedoverridevoidLoadContent()0203/ Create a new SpriteBatch, which can be used to draw textures.04spriteBatch =newSpriteBatch(GraphicsDevice);0506texture1 = Content.Load(PhoneGameThumb);07texture2 = Content.Load(PhoneGameThumb);0809soundEffect = Content.Load(Windows Ding);1011spritePosition1.X = 0;12spritePosition1.Y = 0;1314spritePosition2.X = graphics.GraphicsDevice.Viewport.Width - texture1.Width;15spritePosition2.Y = graphics.GraphicsDevice.Viewport.Height - texture1.Height;1617sprite1Height = texture1.Bounds.Height;18sprite1Width = texture1.Bounds.Width;1920sprite2Height = texture2.Bounds.Height;21sprite2Width = texture2.Bounds.Width;22使用以下代码替换现有的 Draw 方法,该方法用于在屏幕上根据变量中定义的位置来绘制图像:01protectedoverridevoidDraw(GameTime gameTime)0203graphics.GraphicsDevice.Clear(Color.CornflowerBlue);0405/ Draw the sprite.06spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);07spriteBatch.Draw(texture1, spritePosition1, Color.White);08spriteBatch.End();0910spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Opaque);11spriteBatch.Draw(texture2, spritePosition2, Color.Gray);12spriteBatch.End();1314base.Draw(gameTime);1516使用如下代码替换已有的 Update 方法,同时添加了UpdateSprite和CheckForCollision这两个方法,新的 Update 方法将在 UpdateSprite 方法中更新图像的位置,并调用 CheckForCollision 方法来检查两个图像是否碰撞,如果碰撞则会播放声音:01protectedoverridevoidUpdate(GameTime gameTime)0203/ Allow the game to exit.04if(GamePad.GetState(PlayerIndex.One).Buttons.Back =05ButtonState.Pressed)06this.Exit();0708/ Move the sprite around.09UpdateSprite(gameTime,refspritePosition1,refspriteSpeed1);10UpdateSprite(gameTime,refspritePosition2,refspriteSpeed2);11CheckForCollision();1213base.Update(gameTime);141516voidUpdateSprite(GameTime gameTime,refVector2 spritePosition,refVector2 spriteSpeed)1718/ Move the sprite by speed, scaled by elapsed time.19spritePosition +=20spriteSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;2122intMaxX =23graphics.GraphicsDevice.Viewport.Width - texture1.Width;24intMinX = 0;25intMaxY =26graphics.GraphicsDevice.Viewport.Height - texture1.Height;27intMinY = 0;2829/ Check for bounce.30if(spritePosition.X MaxX)3132spriteSpeed.X *= -1;33spritePosition.X = MaxX;343536elseif(spritePosition.X MaxY)4344spriteSpeed.Y *= -1;45spritePosition.Y = MaxY;464748elseif(spritePosition.Y MinY)4950spriteSpeed.Y *= -1;51spritePosition.Y = MinY;5253545556voidCheckForCollision()5758BoundingBox bb1 =newBoundingBox(newVector3(spritePosition1.X - (sprite1Width / 2), spritePosition1.Y - (sprite1Height / 2), 0),newVector3(spritePosition1.X + (sprite1Width / 2), spritePosition1.Y + (sprite1Height / 2), 0);5960BoundingBox bb2 =newBoundingBox(newVector3(spritePosition2.X - (sprite2Width / 2), spritePosition2.Y - (sprite2Height / 2), 0),newVector3(spritePosition2.X + (sprite2Width / 2), spritePosition2.Y + (sprite2Height / 2), 0);6162if(bb1.Intersects(bb2)6364soundEffect.Play();656667四. 构建并运行应用到目前为止代码都已编写完毕,我们可以开始运行并调试该程序了。1. 在菜单中选择Debug | Build Solution,将对该项目进行构建,并且错误列表窗口中没有任何错误信息,你可以通过View | Other Windows | Error List来打开错误列表窗口,如果出错的话请检查前面几个步骤是否正确,然后重新构建。2. 在标准工具条中,设置发布平台为Windows Phone Emulator模拟器.3. 选择菜单Debug | Start Debugging来启动应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鼻咽部恶性肿瘤治疗方案
- 妇产科宫外孕手术后护理管理
- 全科医学科糖尿病并发症监测方案
- 2025年统计师之中级统计师工作实务过关检测试卷A卷附答案
- 2025雇佣司机合同示范文本汇编
- 2025工程装修合同范本
- 国开51718丨地域文化(专)省开课试题及答案
- 2025合同争议仲裁申请书
- 自动化设备售后培训
- 育婴护理师培训教材大纲
- 细节决定成败(优秀班会课件)
- GB/T 8350-2008输送链、附件和链轮
- GB/T 5976-2006钢丝绳夹
- GB/T 3883.311-2019手持式、可移式电动工具和园林工具的安全第311部分:可移式型材切割机的专用要求
- 机械制造工艺学王先逵-课后答案
- 员工食堂应急预案-食堂应急预案和应急措施
- 临床常用药物及其合理应用
- 票据法课件完整版
- 初中地理星球地图八年级下册第九章 青藏地区 区域特征PPT
- 产品结构设计-产品造型设计
- 宏观经济学-期中报告彩印
评论
0/150
提交评论