多语言展示
当前在线:1624今日阅读:60今日分享:41

libgdx:[26]添加检测用的精灵

添加一些功能型代码检测我们前面所做的工作的效果
工具/原料
1

libgdx

2

eclipse

Adding test sprites 添加测试精灵
1

现在我们添加一些测试性的代码来检测一下我们所建立的绘制和绘制机能代码的性能。我们通过在程序上添加几个测试精灵来检测程序运行时的效果。首先添加一些很重要的代码到 world controller中:。。。

2

新的代码添加了两个成员变量:test sprite 和select sprite 。第一个是sprite的实例对象。我们添加5个精灵来测试。第二个变量保存着数组中保存着的被选择的精灵的索引。Sprite类可以被用来绘制texture . 因为我们还没有为我们的对象添加任何一个texture,我们正生成一个用来测试我们的运行情况,用Pixmap类来实现。 Pixmap 保存真实的像素数据 (in a map of bytes) 来绘制任何图片.这个类提供了一些基本的绘图方法,我们在代码中使用这些方法绘制一个透明的32*32像素的红色箱子,里面有一个黄色的x,还有青色的边。 最终的像素数据被放到一个新的Texture 对象中。这个对象最终被附加到每个我们创造的新的精灵上,当我们手工创造的图片被绘制时。这里是一个程序中的图片。

3

每个精灵的尺寸被设置成1*1米,不要忘了,我们把可见世界的尺寸设置成了5*5米的了。所以,这些精灵将占据1/5的游戏世界。理解这个事实是非常重要的,因为它并不是指绘制你的游戏对象的像素尺寸。每个东西都需要用实际的米数来定义,以便他们个可简单游戏世界相关联。精灵的旋转中心被设置为中心坐标。 这个允许我们让精灵围绕自己旋转而不用添加任何的转换效果。 坐标点左右两米之间随机生成。此外第一个选择的精灵的索引设置为0, 在updateTestObjects(),里  我们让选择的精灵旋转以便我们能够方便地看出那个精灵被选择了。

4

我们取得的一切成就到目前为止是添加逻辑来创建和修改游戏 与对象世界,但没有一个是渲染到屏幕上还。这是下一步我们将改变的。首先添加新的行来把Sprite class导入到 World Renderer:... ...然后添加如下代码到worldrenderer中... ...

5

在worldrender 里做的第一件事就是存储传入的worldcontroller的实例。对于 renderer 索引游戏对象是很必要的,那被controller管理着。 在init里,一个新的sprite batch 对象被创建。他将会在我们所有的绘制任务中被用到。在我们可以开始绘制对象之前,我们需要创建一个camera并适当地定义他的viewPort。相机的视口:viewpoort定义看到的游戏世界的尺寸。它的工作基本上和一个真正的相机相同,明显地,当我们通过一个摄像机看东西时我们并不能看到它所指向的那个地方另外的东西。比如,你想看到相机左面的东西你就必须把它向左边移动,which holds true for both real and virtual cameras. 我们用constants中定义的常量来定义我们的viewPort 。在重新绘制显示区域尺寸的事件里,libgdx会调用resize()方法。这是我们的机会,来改写新的显示尺寸并重新定义游戏世界在这种情况下将要怎么被绘制。我们添加到resize()中的代码用来计算我们想要看到的可见的世界的高度和实际绘制的高度之间的比例。.得到答案,然后乘以可用显示宽度 为相机找新的视口的宽度.这个计算的结果使world的看见世界的高度将会保持最大的程度,当world的宽度要按计算出来的比例缩放时,调用camera.update()是非常重要的,无论任何时候,任何改变都将影响到camera。(做出任何改变都要调用update让改变生效)

6

游戏世界的rendering 发生在render()方法中。Sprite batch 类有两个方法分别叫做:Begin()和end()。这两个方法用来开始和结束一个新的batch的绘图命令。在任何绘图命令被运行之前,必须要调用begin()方法。在render test objects()中,  我们用 worldcontroller存储的引用,遍历访问所有以前的精灵,调用精灵类的draw()方法 画它。在所有的绘制命令都执行完了以后,我们通过调用end()方法,结束batch,这个方法跟begin()一样也是必须有的 。

7

完成了所有的步骤,你可以跑起游戏啦试试吧。将会有 一个sprite围绕他的中心旋转告诉我们这个就是现在选中的sprite。这里有一个屏幕截图是window系统运行游戏的界面。

注意事项

代码不能通过百度检测已被省略,

推荐信息