上海招聘网站建设,系统优化的影响因素,建设网站最重要的是什么意思,对购物网站建设的建议下面创建一个简单的Windows Phone 7的XNA 程序#xff0c;只是一个Hello XNA的文本#xff0c;从屏幕的左上角一直往右下角移动#xff0c;通过该例子来开始Windows Phone 7 XNA的游戏编程。 新建一个项目后可以看到这样的一个项目工程结构#xff0c;如图所示。 Content项… 下面创建一个简单的Windows Phone 7的XNA 程序只是一个Hello XNA的文本从屏幕的左上角一直往右下角移动通过该例子来开始Windows Phone 7 XNA的游戏编程。 新建一个项目后可以看到这样的一个项目工程结构如图所示。 Content项目是表示游戏的资源文件相关游戏的资源就需要在Content目录下进行添加。 看一下Game1.cs这个主要的类 using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Input.Touch; using Microsoft.Xna.Framework.Media; namespace HelloWorldXNA { /// summary /// 游戏的主要主体类 /// /summary public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics;//用于管理图形设备 SpriteBatch spriteBatch;//游戏的图形设备来画2D对象 SpriteFont spriteFont1;//字体 Viewport viewport;//窗体 Vector2 textSize;//字体大小 二维向量 Vector2 textPosition;//字体位置 public Game1() { graphics new GraphicsDeviceManager(this); Content.RootDirectory Content; // Frame rate is 30 fps by default for Windows Phone. TargetElapsedTime TimeSpan.FromTicks(333333); // Extend battery life under lock. InactiveSleepTime TimeSpan.FromSeconds(1); } /// summary /// 游戏运行前的一些初始化 /// /summary protected override void Initialize() { //在这里添加游戏的一些初始化处理 base.Initialize(); } /// summary /// 加载游戏资源LoadContent只会执行一次 /// /summary protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch new SpriteBatch(GraphicsDevice); // TODO: use this.Content to load your game content here viewport this.GraphicsDevice.Viewport;//获取游戏的窗体 spriteFont1 this.Content.LoadSpriteFont(SpriteFont1);//加载字体资源 textSize spriteFont1.MeasureString(Hello,XNA!);//返回字符创的高度和宽度 textPosition new Vector2(0, 0); } /// summary /// 游戏退出回收资源 /// /summary protected override void UnloadContent() { // TODO: Unload any non ContentManager content here } /// summary /// 绘制游戏前的更新处理 /// /summary /// param namegameTime游戏的当前时间对象/param protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back ButtonState.Pressed) this.Exit(); // TODO: Add your update logic here if (textPosition.X viewport.Height) { textPosition.Y 10 * (float)gameTime.ElapsedGameTime.TotalSeconds; textPosition.X 20 * (float)gameTime.ElapsedGameTime.TotalSeconds; } else { textPosition.Y - 10000 * (float)gameTime.ElapsedGameTime.TotalSeconds; textPosition.X - 20000 * (float)gameTime.ElapsedGameTime.TotalSeconds; } base.Update(gameTime); } /// summary /// 绘制游戏 /// /summary /// param namegameTime游戏的当前时间对象/param protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here spriteBatch.Begin(); spriteBatch.DrawString(spriteFont1, Hello,XNA!, textPosition, Color.Red); spriteBatch.End(); base.Draw(gameTime); } } } 运行的效果如下 对于新建一个XNA for WP7的工程可以看到在它的工程文件中有Initialize() LoadContent() Update()Draw()这几个主要的函数那由些也就可以看得出XNA开发游戏的一个基本架构了 Loading用来加载保证游戏可以正常运行的所有资源等这个状态在整个系统中只在游戏开始前运行也就是说整个游戏的生命周期中只运行一次。 Update这个状态是由所设置的时间间隔来驱动的在每个时间间隔里重新计算游戏中各角色的状态以及游戏分值和各种游戏逻辑。一般默认为每秒30次(帧)如果设置间隔过大游戏可能无法启动。 Draw这个状态也是由所设置的时间间隔来驱动的用来绘制各种变化到显示设置上。 对于XNA资源在创建新的工程时就一起创建了一个Content工程所有的资源(图片、声音、视频、字体、3D造形、纹理等)都要加载到这个工程中并被这个工程编译为.xnb格式的XNA二进制文件这样才可以加载到游戏中并被调用。 XNA游戏的生命周期如图所示 1)GraphicsDeviceManager在XNA类库介绍中提到的该类型是非常重要的。它为开发者提供方法来管理目标设备的显卡资源。简单地说就是调用显卡的一个接口该对象的GraphicsDevice属性代表当前目标设备的显卡。 2)SpriteBatch该对象主要的作用是绘制文字和2D图像。在游戏开发过程中它的作用是非常重要的因为游戏需要大部分图片、文字和声音等素材资源。所有游戏中需要显示的画面都必须经过SpriteBatch对象中的Draw方法来绘制。 3)Initialize( )该方法用来初始化游戏程序的变量和对象。它允许游戏在运行之前做一些初始化的工作。可以在此查询任何需要的服务和载入与图形无关的内容。例如显卡设备、游戏分数设置等。 4)LoadContent( )当初始化完毕后程序就进入LoadContent该方法用来加载游戏的素材包括游戏的模式、声音、图像等。这个方法在一个游戏中只会被调用一次并且是加载所有素材的地方。 5)Update( )该方法相当于Direct3D中的FrameMove简单地说就是在图形上修改当前画面。它主要用于游戏执行一些逻辑如刷新画面、检查碰撞、更新分数、检测游戏进程、收集输入数据以及播放音频等。 6)Draw( )该方法相当于Windows编程的Paint或者OnPaint是系统自动绘图的方法。 游戏程序执行完LoadContent后开始进入一个游戏循环无论用什么语言编写游戏程序都需要一个游戏循环这也是游戏程序与应用程序的最大区别。在XNA游戏项目中游戏循环主要由Update和Draw两个方法组成。 转载于:https://blog.51cto.com/linzheng/1078473