Spiga

Windows Phone 7、XNA的旋转的背景

2011-12-26 17:58 by 张剑, 324 visits, 收藏, 编辑

在游戏表现的过程中需要一些比较酷的动作,我们需要通过图型与XNA中的一些代码来实现,比如我们要说到的一个360度转动的圆。

在手机上的效果如下:

 

当然在这里我们看不到转动的效果,下边提供的有源码,大家可以下载运行测试一下。

操作步骤如下:

1.创建WP7XNA项目。

2.在Game1类中,添加如下代码:

        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D _Aluren;//纹理
        Rectangle _AlurenRectangle;//位置大小
        Rectangle _SrAlurenRectangle;//源矩形
        int i = 0; //旋转角度
        Vector2 _Origin;//起点

其中加了注释的是需要我们自己创建的字段。

3.在Initialize()方法或者构造方法中添加如下代码:

            _AlurenRectangle = new Rectangle(220, 220, 600, 600);
            _SrAlurenRectangle = new Rectangle(0, 0, 800, 800);
            _Origin = new Vector2(400, 400);

这样或以初始化圆形的位置、旋转的源矩形及起点。

4.将Aluren.png图片放到WindowsPhoneGameContent项目中。

5.在LoadContent()方法中添加如下代码:

  _Aluren = Content.Load<Texture2D>("Aluren");

在这里完成图片纹理的加载。

6.在Update(GameTime gameTime)方法中添加:

            if (i >= 360)
                i = 0;
            i++;

在每次刷新时,绘制的角度+1,直到360度后重新开始,当然这里的度数也可以是其他,比如90,180等。

7.最后在Draw(GameTime gameTime)方法中完成绘制功能:

            spriteBatch.Begin();
            spriteBatch.Draw(_Aluren, _AlurenRectangle, _SrAlurenRectangle, Color.White, i, _Origin, SpriteEffects.FlipHorizontally, 0);
            spriteBatch.End();

整个程序完成后,运行即可看到效果。

 

图片文件:http://jianle.blog.51cto.com/attachment/201112/429692_1324893909.png

源码:http://jianle.blog.51cto.com/attachment/201112/429692_1324894092.zip

注意:下载完成后,需要将图片文件放入到源码中才能使用!

Add your comment

2 条回复

  1. #1楼 Kenny tian      2011-12-27 18:33
    我试了一下,90,180,360度肉眼看不出区别。

    我还发现一个现象,当手机处于 LandscapeLeft 或 LandscapeRight时,图片会跳动
     回复 引用 查看   
  2. #2楼[楼主] 张剑      2011-12-28 16:08
    @Kenny tian
    因为图片的关系,所以调整度数并看不出区别来,不论转到90或者180,都是转了1/4圈或1/2圈,如果图片在不同的角度上处理一下的话就可以看出效果来了,我这里没有真机,所以有些效果测不出来,可能因为这个图片的圆画的并不是很正,同时源图片的大小是800的,可以将矩形大小也调整为800试一下。
     回复 引用 查看