游戏引擎Andengine总结(三):AndEngine与Android的粘合点
2012-02-18 08:00
309 查看
AndEngine为我们提供了在Android中使用其引擎方便的接口!
众所周知,几乎每一个Android的应用和游戏都会有Activity(当然只有某些Service或者Reciver之类的除外。。。),而作为游戏,Activity更是必不可少的,原因很简单,游戏需要与用户交互,游戏需要呈现出画面,这些,都需要Activity的支持。。。
再看AndEngine的包结构,在/ui/activity/中,我们会发现BaseActivity,BaseGameActivity,SimpleBaseGameActivity。。。
这些就是AndEngine中为我们做好的Activity的封装,其中继承关系是
BaseActivity -> BaseGameActivity -> SimpleBaseGameActivity
当然,从BaseGameActivity中继承的子类不止SimpleBaseGameActivity!在看AndEngineExamples(官方为我们提供的例子),我们会发现,几乎所有的例子都是继承于SimpleBaseGameActivity的。
在BaseActivity中,只是定义了一些异步加载资源的方法,并没有做关于和引擎相关的处理。
所以,再看BaseGameActivity,粗读源码发现,BaseGameActivity是在Android中使用AndEngine的最基本的类!其中有两个很重要的点,一是Engine(引擎),二是Render(渲染),这是最重要的一部分,我们分开来看!
Engine的构造:
当然是在Activity的生命周期方法的onCreate()中,也就是说我们在继承BaseGameActivity或者其子类的时候,不论我们重写或者不重写其onCreate(),ps:重写的话调用super.onCreate(),都会调用BaseGameActivity的onCreate()方法,这也就为我们提供了构造Engine的机制。至于Engine的构造
Render的使用:
其中另一个重要的部分就是游戏的绘制了!AndEngine是使用OpenGL来做的,所以就需要调用Android中的OpenGL部分,而Android中OpenGL的基本用法是:
1.构造一个实现于GLSurfaceView的类,需要有一个自定义的Render类(见2),用于填充到Activity(通过setContentView()方法,ps:GLSurfaceView也是View的子类)
2.自定义一个实现于GLSurfaceView.Render的类,为我们提供渲染的操作
看源码BaseGameActivity中的onCreate()方法的最后一行
分析完了BaseGameActivity中最重要的两个部分,大家就会明白了,为什么我们只需要继承于BaseGameActivity或其子类,就可以使用Engine和绘制了吧!
好了,今天就总结到这儿吧!后续会再丰富一下引擎的更新和绘制的原理的!
各位看官早安,欢迎拍砖!(你的拍砖,才是我深入的切入点!谢谢!)
众所周知,几乎每一个Android的应用和游戏都会有Activity(当然只有某些Service或者Reciver之类的除外。。。),而作为游戏,Activity更是必不可少的,原因很简单,游戏需要与用户交互,游戏需要呈现出画面,这些,都需要Activity的支持。。。
再看AndEngine的包结构,在/ui/activity/中,我们会发现BaseActivity,BaseGameActivity,SimpleBaseGameActivity。。。
这些就是AndEngine中为我们做好的Activity的封装,其中继承关系是
BaseActivity -> BaseGameActivity -> SimpleBaseGameActivity
当然,从BaseGameActivity中继承的子类不止SimpleBaseGameActivity!在看AndEngineExamples(官方为我们提供的例子),我们会发现,几乎所有的例子都是继承于SimpleBaseGameActivity的。
在BaseActivity中,只是定义了一些异步加载资源的方法,并没有做关于和引擎相关的处理。
所以,再看BaseGameActivity,粗读源码发现,BaseGameActivity是在Android中使用AndEngine的最基本的类!其中有两个很重要的点,一是Engine(引擎),二是Render(渲染),这是最重要的一部分,我们分开来看!
Engine的构造:
当然是在Activity的生命周期方法的onCreate()中,也就是说我们在继承BaseGameActivity或者其子类的时候,不论我们重写或者不重写其onCreate(),ps:重写的话调用super.onCreate(),都会调用BaseGameActivity的onCreate()方法,这也就为我们提供了构造Engine的机制。至于Engine的构造
this.mEngine = this.onCreateEngine(this.mEngineOptions);通过调用onCreateEngine(),如果大家试着使用AndEngine写过一些小Demo的话就会很清楚的知道,继承于BaseGameActivity或者其子类,都必须实现3个方法,onCreateEngine()就是其中的一个(当然也可能是onCreateEngineOptions(),如果我们使用默认的Engine引擎而不是其它的引擎的话,我们之需要配置引擎的参数即可)。
Render的使用:
其中另一个重要的部分就是游戏的绘制了!AndEngine是使用OpenGL来做的,所以就需要调用Android中的OpenGL部分,而Android中OpenGL的基本用法是:
1.构造一个实现于GLSurfaceView的类,需要有一个自定义的Render类(见2),用于填充到Activity(通过setContentView()方法,ps:GLSurfaceView也是View的子类)
2.自定义一个实现于GLSurfaceView.Render的类,为我们提供渲染的操作
看源码BaseGameActivity中的onCreate()方法的最后一行
this.onSetContentView();再看一下onSetContentView()的实现
protected void onSetContentView() { this.mRenderSurfaceView = new RenderSurfaceView(this); this.mRenderSurfaceView.setRenderer(this.mEngine, this); this.setContentView(this.mRenderSurfaceView, BaseGameActivity.createSurfaceViewLayoutParams()); }哈哈,和我们的分析是一样的!
分析完了BaseGameActivity中最重要的两个部分,大家就会明白了,为什么我们只需要继承于BaseGameActivity或其子类,就可以使用Engine和绘制了吧!
好了,今天就总结到这儿吧!后续会再丰富一下引擎的更新和绘制的原理的!
各位看官早安,欢迎拍砖!(你的拍砖,才是我深入的切入点!谢谢!)
相关文章推荐
- 配置JDKAndroid 2D游戏引擎AndEngine
- android游戏引擎andengine学习系列七:纹理贴图的理解
- android游戏引擎andengine学习系列四:绘制特效的动画文字
- ANDROID游戏引擎ANDENGINE的常用模块介绍
- 游戏引擎Andengine总结(六):滑动关卡选择的实现
- android游戏引擎andengine学习系列七:纹理贴图的理解
- Android 2D游戏引擎AndEngine快速入门教程
- android游戏引擎andengine学习系列五:粒子发射器形成的超炫效果
- 【Android】基于andengine游戏引擎的简单游戏实现(模拟控制器、tiledmap地图)
- android游戏引擎andengine学习系列六:Physics物理碰撞效果理解
- 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程
- android游戏引擎andengine学习系列五:粒子发射器形成的超炫效果
- android游戏引擎andengine学习系列六:Physics物理碰撞效果理解
- 游戏引擎AndEngine总结(九):三种加载图片资源的方法
- Android游戏引擎--AndEngine入门
- android游戏开发——AndEngine游戏引擎(2)--------精灵sprite
- 配置JDKAndroid 2D游戏引擎AndEngine
- Android 2D游戏引擎AndEngine快速入门教程
- andengine游戏引擎总结进阶篇1
- Android 2D游戏引擎AndEngine配置环境