天天看点

libgdx游戏引擎开发笔记(三)Libgdx的游戏组件部分

今天,再次总结一下,让我们更加清楚的了解到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外相互间不能组合叠加,事件能否传递取决于上级组件是否设置了相关监听

   我们再来张图关系就更顺了!嘿嘿!

<a target="_blank" href="http://blog.51cto.com/attachment/201307/104237341.jpg"></a>

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

<b>     本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1255187</b><b>,如需转载请自行联系原作者</b>