现在的位置: 首页 > 综合 > 正文

游戏引擎Andengine总结(三):AndEngine与Android的粘合点

2013年10月14日 ⁄ 综合 ⁄ 共 1825字 ⁄ 字号 评论关闭

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的构造

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和绘制了吧!


好了,今天就总结到这儿吧!后续会再丰富一下引擎的更新和绘制的原理的!

各位看官早安,欢迎拍砖!(你的拍砖,才是我深入的切入点!谢谢!)


【上篇】
【下篇】

抱歉!评论已关闭.