多语言展示
当前在线:1425今日阅读:26今日分享:39

libgdx:[21]调试器和代码热交换

此篇主要介绍关于eclipse的debugger -调试器,和代码热交换功能。
工具/原料
1

libgdx

2

eclipse

Having fun with the debugger and Code Hot Swapping debugger 和代码热交换的乐趣
1

这一节我们将要运用调试器在程序运行的时候观察程序。要做到这一点我们需要给程序设置断点,当程序运行到断点的位置时就会停下来,从而方便我们观察程序的状态。打开Eclipse中的MyDemo.java 文件,在创建一个sprite batch的实例的那行代码处设置一个断点。如图示:

2

双击Eclipse中代码编辑窗口的左边的空白部分,设置断点 或者删除已经存在的断点。

3

下一步在Eclipse中的项目资源管理器中的桌面项目上右键单击鼠标,导航到调试Java application。应用程序应该在应用程序的窗口可见时直接停止运行。    Eclipse 应该自动地转换到调试视图,在这个视图里应该有更多的额外的关于程序运行的信息显示出来。

4

在变量标签处你可以检查当前的变量在运行范围内的值。例如,那两个浮点型的变量w和h 他们已经被设置了,你可通用在变量标签中找到他们从而检查他们的值。变量的正确值显示为480 W和320 h。通过选择run 菜单栏中的选项你可以恢复或者停止或者重新运行你的应用,那么现在从新运行项目。让我们来一起进行代码热交换,确定你的实例程序现在是正在执行的状态。下面的列表是一个修改后的版本的render()方法。修改的地方高亮显示了。

5

@Overridepublic void render() {Gdx.gl.glClearColor(1, 1, 1, 1);Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT)batch.setProjectionMatrix(camera.combined);batch.begin();sprite.setRotation(45);sprite.draw(batch);batch.end();}

6

在你的 代码中sprite.Draw()被调用之前,把下面的代码段添加到你的代码中:  Sprite.set Rotation(45);

7

这会使你的sprite 按照逆时针的方向旋转45度的角。下一步就是保存更改,你将会看到刚才你对代码的修改现在已经反映到你正在运行的程序中了。

8

代码热交换要求Eclipse 的自动构建特性是正常工作的,你可以通过Build 菜单下的Automatically 选项是否被选中快速查看此功能是否正常工作。你可能已经意识到这个伟大的功能使开发人员能做事情。试想一个较为复杂的场景,你想为你的对象找到最好的位置,或者你只是想看看它会在两个不同的设置下的不同表现。它是你的代码就像是一块任由你处置的蛋糕,通过代码热交换这个工具。

9

让我们来比以前用过的代码更近一步的学习,让我们的图片持续的转动。我们需要一个变量来存储我们的图片某一个时刻旋转的角度。这个值会随着时间的增加而改变。为了防止rot 的值出现可能的溢出,我们用rot 的值 模运算 360度,最后设置sprite的角度。 下面就是更改以后的代码:

10

现在我们已经实现了让rotation 的值一直在变化,现在我们尝试一下一个更有趣的事情,让他实现一个摆动的效果。正玄函数和余弦函数有一个震荡的效果,我们可以通过使用它们来实现这样一个左右摆动一定的量的效果。这个摆动的幅度的值会随着它与正选函数相乘得到的结果而不停的增大或缩小。 代码如下:@Overridepublic void render() {  Gdx.gl.glClearColor(1, 1, 1, 1);  Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);  batch.setProjectionMatrix(camera.combined);  batch.begin();  float degressPerSecond = 10.0f;  rot = (rot + Gdx.graphics.getDeltaTime() *      degressPerSecond) % 360;  final float shakeAmplitudeInDegrees = 5.0f;  float shake = MathUtils.sin(rot) * shakeAmplitudeInDegrees;  sprite.setRotation(shake);  sprite.draw(batch);  batch.end();}下面的图描绘的是旋转和shake的不同效果。

11

摘要, 这一节中我们学习了很多关于libgdx的知识,还有项目是怎么一起协同工作的。其中包括backends ,modules,还有 start class。此外还包括了,应用的生命周期和其相应的接口,以及他们是实现的功能。调试器已经被用来观察程序运行状态。 此外我们还使用了Java虚拟机的代码热交换特性。现在我们对libgdx应经有了一个初步的认识,现在是时候开发一个真正的游戏了。我们将会按照开发周期一步步的开始开发我们的游戏。Libgdx是一个框架而不是一个真正的游戏引擎,所以我们要创建一个自己的引擎。在下一节中我们将讲解如和构建一个可以用来控制我们游戏的合适的系统结构。

注意事项

关于代码热交换的功能,需要eclipse的自动构建特性是正常工作的。

推荐信息