AndEngine游戏引擎讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AndEngine游戏引擎讲解
AndEngine是一款以OpenGL ES方式进行画面渲染的2D游戏引擎,可以运行在支持Android
1.6及以上版本的系统当中。它在默认情况下已经可以支持中文,采用屏幕坐标系绘也更符合一般Android绘图习惯。
AndEngine引擎基础构成如下图所示:
如何使用AndEngine
AndEngine的基本运行原理
解读AndEngine源码后我们可以发现,AndEngine除了采取低耦合、高内聚的框架策略细分引擎模块,使用OpenGLES进行游戏渲染之外;该引擎还以双线程方式
具体地说,其绘图线程位于AndEngine提供的GLSurfaceView内部类GLThread(在AndEngine的org.anddev.andengine.opengl.view包下,非Android默认的 当AndEngine进行游戏绘图时,游戏业务线程会通过wait方式锁定,而当游戏业务处理时,也会以同样的手段锁定绘图线程,二者间具体交互关系由Engine类
另外,或许是考虑到持续双线程运行电量消耗较大的缘故,AndEngine默认情况下要求用户启动PowerManager进行电源管理,故此需要
由于AndEngine是专供Android使用的2D游戏引擎,所以作为启动类的Activity肯定必不可少,而AndEngine也理所应当的提供给我们这样一个Activity,那就是 一个标准的AndEngine应用,至少应该对BaseGameActivity做如下继承:
其中四个必须被重载函数的启动顺序如下:
onLoadEngine->onLoadResources->onLoadScene->onLoadComplete
具体的讲,AndEngine会首先加载Engine类实例通知系统游戏引擎的基本运行方式,而后加载游戏资源,其次加载游戏场景实例,最后通过onLoadComplete通
此外,由于BaseGameActivity类重载了父类Activity的onResume与onPause函数以保证其自身的正常运行,所以不建议在继承BaseGameActivity时再次重载上AndEngine的基本运行方式
上文介绍了AndEngine的基本运行机制与运行流程,然而仅仅这样AndEngine还是无法实际运行,因为Engine与Scene都没有获得具体实现。假如我们想要在
运行效果如下图所示:
另外,事实上BaseGameActivity并非AndEngine提供的唯一Activity,其UI包下尚有以SplashScene场景作为特效启动的BaseSplashActivity类,以及通过重如何使用AndEngine
事实上,AndEngine中组件颗粒都非常细小,几乎每个由AndEngine提供的功能都会有一个对应的类存在。
比如仅Engine就衍生出DoubleSceneSplitScreenEngine(可以同时显示并缓存两个Scene的Engine,通过setFirstScene以及setSecondScene进行双屏切换,即AndEngine的IUpdateHandler接口
IUpdateHandler类是AndEngine引擎中使用频率非常之高的组件之一,其本身是一个接口,内部有onUpdate以及reset两个函数等待实现,几乎所有AndEngine 具体的讲,所有通过AndEngine中registerUpdateHandler函数注册的IUpdateHandler,都会被保存到一个叫做UpdateHandlerList的IUpdateHandler接口 另外,与UpdateHandlerList集合类作用类似的还有RunnableHandler类,该类同样是IUpdateHandler的具体实现,它的作用在于保存并执行一次标准Run AndEngine的Async方法
默认情况下,AndEngine的资源加载会在构建Engine之后,调用onLoadResources函数时进行同步加载。但如果一次性加载资源太多时,便可能会面临一个 具体的讲,AndEngine对Android系统自带的AsyncTask类进行了适当封装(具体封装在BaseActivity类中,该类为BaseGameActivity的父类,AndEngine
运行效果如下图所示:
AndEngine中的精灵调用
精灵类,是一个大家耳熟能详,并且任何游戏引擎无法回避的关键性组件之一,它常常被用来表示一个游戏中角色或者特定画面要素。如此重要的存在,And
AndEngine的精灵动画
在绝大多数的游戏开发中,仅仅有精灵类存在是并不足够的,我们往往还需要让精灵作出绚丽的效果以吸引用户眼球,而这些效果在AndEngine中,统一通过
1. 2. 3. 4. 5. 6. 7. 8.
运行效果如下图所示:
AndEngine的常用模块介绍
关于Engine:
Engine是AndEngine的核心所在,它对AndEngine引擎中Camera、Scene等重要组件进行了统一管理,但必须和BaseGameActivity合作使用,利用
关于BaseGameActivity:
如果你想正常使用AndEngine,那么当前Activity就必须继承自BaseGameActivity或其子类,否则你连初始化Engine也做不到。虽然它还有父类BaseAc
关于IResolutionPolicy:
IResolutionPolicy是一个接口类,其中只规定了onMeasure函数的实现格式。事实上,AndEngine中所有该类具体实现的作用与标准View中的onM
在AndEngine的org.anddev.andengine.engine.options.resolutionpolicy包下有一组IResolutionPolicy接口的具体实现,分别为BaseResolutionPolic 最后,所有IResolutionPolicy的实现类,都要随着EngineOptions于初试化时传递给Engine实例才起作用。
关于Camera:
该类即我们常说的游戏摄像机,在AndEngine的Camera有两种作用,一是用以调节屏幕的显示区域,二是利用HUD类实际绘制游戏屏幕于手机之上。
关于Scene:
场景容器,作用类似于LGame中的Screen,能够将某一特定场景作为游戏模块进行调用,我们可以利用它来切换当前游戏的画面与触摸屏监听,切换方法
关于Entity:
Entity是IEntity接口的具体实现,也是AndEngine中无论Scene、Layer、Sprite(这个继承关系比较远,中间隔了BaseRectangle、RectangularShape、
关于Texture:
Texture是AndEngine所提供的纹理用类,但Texture本身(在AndEngine中)并没有提供加载图片的方法,必须通过TextureRegionFactory类(更准确
关于TextureRegion: