今天,再次总结一下,让我们更加清楚的了解到libgdx这款游戏引擎的框架。
1.Libgdx中游戏组件使用的简单关系说明:
组件 | 介绍 |
AndroidApplication | Activity的子类,只有启动类继承了AndroidApplication并执行才能启动Libgdx类库 |
ApplicationListener | 仅可在初始化时注入ApplicationListener,此后除非替换Activity否则无法切换ApplicationListener |
Game | 是ApplicationListener的libgdx抽象实现,其中Screen可切换 |
Screen | 基本函数与ApplicationListener近乎一致,唯一差别在于可以通过Game类用setScreen函数进行切换,如不使用Game类则可无视它的存在 |
Stage | 游戏场景用类,用以管理添加其中的具体Actor,管理Actor的手段在于内置的Group类 |
Actor | 游戏用演员或者说角色,与Action类组合使用时可以产生不同种类的“动画行为”,Action部分的具体实现基本与Cocos2D一致 |
Group | 本身为Actor的具体实现,能够处理注入其中的Actor,也能以递归方式管理注入其中的其它Group |
Image、Button、Label等 | 细分Actor的具体实现,以重载方式响应事件,除Group外相互间不能组合叠加,事件能否传递取决于上级组件是否设置了相关监听 |
我们再来张图关系就更顺了!嘿嘿!
2.注意事项
1、Libgdx使用笛卡尔坐标系(初始坐标为左下0,0),而JavaSE、JavaME以及标准Android系统(还有LGame引擎)使用的是屏幕坐标系(初始坐标为左上0,0),程序员在使用时必须分清差别,以免不知道如何定位(通常笛卡尔系Y轴由下向上延伸,屏幕系Y轴由上向下延伸)。
2、在Android环境使用Libgdx的Gdx.files.internal方法时(即FileHandle类以FileType.Internal模式工作),要读取的文件必须置于Assets文件夹下才能读取,在Linux、Mac、Windows环境下则可以置于除jar内部外的任何可读取位置。
3、Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,不过目前只支持png、jpg、bmp三种图片格式。
4、Libgdx要求在游戏中使用的图片宽与高皆为2的整数次幂,否则会产生一个Gdx异常并禁止加载行为(texture width and height must be powers of two)。
5、Libgdx以ApplicationListener作为游戏的基础界面容器,但Libgdx并没有提供可以直接切换ApplicationListener的函数。目前最新版本的Libgdx中提供了Game类(ApplicationListener子类,本身为抽象类)和一个供Game类调用的Screen类用以解决此问题。具体的Libgdx切换游戏画面方法是,先用继承Game类的游戏窗体进行initialize让基础画面显示,再让具体的细分游戏模块继承Screen类进行不同游戏画面的具体绘图,而后Game类通过setScreen方法进行画面切换。
6、Libgdx的图像加载处理(以及部分渲染),音频播放和自带的Box2D封装皆通过JNI方式实现,因此必须在libs文件夹下添加armeabi(或高版本Android系统支持的armeabi-v7a)文件夹以及相关so文件Android版Libgdx才能正常运行。
ok!就这些了啦,本人刚开始接触游戏引擎,有什么不对的地方,谢谢指正!
参考博客:http://blog.csdn.net/cping1982/article/details/6176191
本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1255187,如需转载请自行联系原作者