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外相互间不能组合叠加,事件能否传递取决于上级组件是否设置了相关监听


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




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


你可能感兴趣的:(android,libgdx)