- Windows Phone游戏开发实战
- 王传炜编著
- 431字
- 2020-08-28 19:05:47
1.3.2 Upate和Draw
在开发XNA游戏时,需要了解一个很重要的概念,就是游戏的刷新率是多少。通俗地说,就是1秒钟Draw和Update函数被调用多少次。
只有弄清楚这个问题,才能控制2D游戏动画的播放速度。Windows Phone里XNA的刷新率默认为30 fp(s帧每秒),也就是说1秒钟Draw和Update要被调用30次。展开Game1函数,可以看到如下代码:
Public Game1() { Graphics= new GraphicsDeviceManager(this); Content.RootDirectory ="Content"; //Frame rate is 30 fps by default for Windows Phone TargetElapsedTime = TimeSpan.FromTicks(333333); }
其中有一段英文注释是“Frame rate is 30 fps by default for Windows Phone”,意思是Windows Phone的默认刷新率是30 fps。
把用LoadContent加载的2D纹理用Draw函数绘制出来。在添加了图片资源以后,就可以用Texture2D这个对象在XNA中进行处理了,如图1-9所示。代码如下:
Texture2D loadingTexture; loadingTexture =Content.Load<Texture2D>("UI/loading");
图1-9 加载loading图片纹理
这样就将loading.png这个纹理加载到loadingTexture对象中,接下来,只需要在Draw函数中用SpriteBatch把纹理绘制出来:
spriteBatch.Draw(loadingTexture,new Vector2(0,0),Color.White);
相关代码如图1-10所示。
图1-10 绘制loading图片
在Update函数中改变2D纹理的位置来左右移动loading图片,代码如下:
int PointX,changeX; protected override void Update(GameTime gameTime) { if(GamePad.GetState(PlayerIndex.One).Buttons.Back==ButtonState.Pressed) this.Exit(); if(PointX<=0) { changeX=1; } else if(PointX>=800) { changeX = -1; } PointX += changeX; base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); spriteBatch.Draw(loadingTexture,new Vector2(PointX,0),Color.White); spriteBatch.End(); base.Draw(gameTime); }
然后,启动模拟器,按【F5】键即可,最后在模拟器中的效果如图1-11所示。
图1-11 在Update函数里移动loading图片