AndEngine学习(三):AndEngine与Android的粘合点
来源:互联网 发布:4g网络制式有哪些 编辑:程序博客网 时间:2024/06/04 20:05
- AndEngine学习(三):AndEngine与Android的粘合点
- 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的构造
[java] this.mEngine = this.onCreateEngine(this.mEngineOptions);
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()方法的最后一行
[java] this.onSetContentView();
this.onSetContentView();再看一下onSetContentView()的实现
[java] protected void onSetContentView()
{
this.mRenderSurfaceView = new RenderSurfaceView(this);
this.mRenderSurfaceView.setRenderer(this.mEngine, this);
this.setContentView(this.mRenderSurfaceView, BaseGameActivity.createSurfaceViewLayoutParams());
}
protected void onSetContentView()
{
this.mRenderSurfaceView = new RenderSurfaceView(this);
this.mRenderSurfaceView.setRenderer(this.mEngine, this);this.setContentView(this.mRenderSurfaceView, BaseGameActivity.createSurfaceViewLayoutParams());
}哈哈,和我们的分析是一样的!
分析完了BaseGameActivity中最重要的两个部分,大家就会明白了,为什么我们只需要继承于BaseGameActivity或其子类,就可以使用Engine和绘制了吧!
好了,今天就总结到这儿吧!后续会再丰富一下引擎的更新和绘制的原理的!各位看官早安,欢迎拍砖!(你的拍砖,才是我深入的切入点!谢谢!)
- AndEngine学习(三):AndEngine与Android的粘合点
- 游戏引擎Andengine总结(三):AndEngine与Android的粘合点
- AndEngine引擎的学习笔记(三)
- AndEngine学习笔记(三)
- AndEngine之DEMO学习(三)SpriteExample
- Android游戏开发的入门学习(andEngine引擎)
- AndEngine引擎的学习笔记(一)
- AndEngine引擎的学习笔记(二)
- andengine学习
- Andengine
- andengine
- andengine-4: TexturePack的学习
- AndEngine之DEMO学习(零)AndEngine结构
- AndEngine学习笔记(一)加入AndEngine库
- AndEngine学习之路(一):AndEngine配置
- android游戏引擎andengine学习系列二:简单的例子
- andengine编程之sprite(三)
- andengine编程之sprite(三)
- 异步操作
- iPhone/iOS UIView开发总结
- onmeasure
- Android中轻松使用线程
- Hibernate乐观锁和悲观锁
- AndEngine学习(三):AndEngine与Android的粘合点
- 抽象类
- hdu 2044 一只小蜜蜂...(很简单的递推)
- 一个全面的PHP整站防注入程序代码
- wince 串口操作Writefile问题
- S3C2440输入/输出端口
- Android异常一、异步任务导致的窗口句柄泄漏问题
- lwIP配置文件opt.h和lwipopts.h初步分析
- 运用递归思想求100以内整数的和