`

andengine学习(一)

 
阅读更多

Android游戏引擎AndEngine的常用模块介绍

由于AndEngine包的下属类较多,并且细分也较为庞杂,在一篇文章中一次性介绍完毕几乎不可能实现。所以下面开始,小弟会就AndEngine的一些核心模块进行简明扼要的说明,但如果前文做过说明的下文会一笔带过。

PS:事实上,就连AndEngine作者也不可能做到详细介绍,毕竟到目前为止AndEngine压根没有出过文档。(连andengineexamples下的示例代码都已经和最新的AndEngine源码脱离了……)

1、关于Engine: 

Engine是AndEngine的核心所在,它对AndEngine引擎中Camera、Scene等重要组件进行了统一管理,但必须和BaseGameActivity合作使用,利用EngineOptions类可以对其进行必要的参数配置。

2、关于BaseGameActivity:
 


如果您想正常使用AndEngine,那么当前Activity就必须继承自BaseGameActivity或其子类,否则你连初始化Engine也做不到。虽然它还有父类BaseActivity,但BaseActivity只提供了一些异步加载方法而无关AndEngine的主体实现。因此,BaseGameActivity就是实际上的AndEngine最基础用类无疑。

3、关于IResolutionPolicy:
 


IResolutionPolicy是一个接口类,其中只规定了onMeasure函数的实现格式。事实上,AndEngine中所有该类具体实现的作用与标准View中的onMeasure函数几乎一致,也会被标准View中的onMeasure函数重载调用(具体调用在AndEngine的RenderSurfaceView类当中)。而且除BaseResolutionPolicy外,所有AndEngine的IResolutionPolicy实现也都调用了View的setMeasuredDimensionProxy函数。

在AndEngine的org.anddev.andengine.engine.options.resolutionpolicy包下有一组IResolutionPolicy接口的具体实现,分别为BaseResolutionPolicy(除了会校验一下屏幕大小外,什么也不做)、FillResolutionPolicy(拉伸游戏画面为全屏填充,视摄像机大小不同,会有不同程度变形)、FixedResolutionPolicy(强行规定游戏画面为固定大小,此设置不会自动适应屏幕大小),RatioResolutionPolicy(按比例修正画面大小,以适应屏幕大小),RelativeResolutionPolicy(根据构建RelativeResolutionPolicy时的缩放参数,缩放游戏屏幕为指定比例)。

最后,所有IResolutionPolicy的实现类,都要随着EngineOptions于初试化时传递给Engine实例才起作用。

4、关于Camera:
 


该类即我们常说的游戏摄像机,在AndEngine的Camera有两种作用,一是用以调节屏幕的显示区域,二是利用HUD类实际绘制游戏屏幕于手机之上。

5、关于Scene:
 


场景容器,作用类似于LGame中的Screen,能够将某一特定场景作为游戏模块进行调用,我们可以利用它来切换当前游戏的画面与触摸屏监听,切换方法是利用Engine.setScene。

6、关于Entity:
 


Entity是IEntity接口的具体实现,也是AndEngine中无论Scene、Layer、Sprite(这个继承关系比较远,中间隔了BaseRectangle、RectangularShape、GLShape、Shape等上级类,不过追溯源头始终继承自Entity)的统一父类,通过Entity我们可以让AndEngine中场景,或场景中某精灵实现统一效果的缩放、旋转、变色等操作。

7、关于Texture:
 


Texture是AndEngine所提供的纹理用类,但Texture本身(在AndEngine中)并没有提供加载图片的方法,必须通过TextureRegionFactory类(更准确的说,依赖它内部封装的TextureRegion、BuildableTexture等类)与之合作才可以加载纹理。除此之外,AndEngine要求所加载纹理(图片)大小必须为2的整数次幂。

8、关于TextureRegion:
 


TextureRegion的父类是抽象类BaseTextureRegion,主要功能也被封装在BaseTextureRegion类当中,AndEngine提供了TextureRegionFactory这个工厂类用以简化构建TextureRegion的流程。单就TextureRegion来讲,它的作用似乎就是让系统知道如何剪切一个纹理,并返回一个这样的纹理给你。

然而,事实上AndEngine中只有TextureRegion才更接近于通常意义上的Texture。或者说,只有TextureRegion + Texture时,我们才能较为完整的使用AndEngine纹理功能。严肃的讲,AndEngine中的Texture有很多功能必须靠TextureRegion最终完成,比如AndEngine中的Sprite必须加载TextureRegion才能使用Texture,而不是直接调用Texture,TMXTiledMap中读取指定瓦片返回的也是TextureRegion,而非直接的Texture(进行画面渲染时AndEngine内部会调用TextureRegion中的Texture引用,但也只允许如此调用);应该说,AndEngine中见Texture几乎必见TextureRegion,二者无法分离,缺一不可。

9、关于TextureOptions
 


在AndEngine中,TextureRegionFactory类决定纹理的加载路径,Texture类作为承载纹理的实体对象,而TextureOptions类决定了纹理的渲染方式。

也即是说,OpenGLES将以何种方式显示纹理图像,都由TextureOptions类所决定。在当前最新版本的AndEngine中,默认提供了:

1、NEAREST(Nearest滤波,实现上依赖GL_NEAREST做不光滑过滤,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度快画质差)

2、BILINEAR(双线性插值,实现上依赖GL_LINEAR做线性滤波,纹理环绕模式为GL_CLAMP_TO_EDGE,显示速度慢画质佳)

3、REPEATING(与NEAREST同为Nearest滤波,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度较快画质差)

4、REPEATING_BILINEAR(与BILINEAR同为双线性插值,但纹理环绕模式为GL_REPEAT,会自动填充纹理上的空白区域,显示速度很慢画质佳(低端机跑此模式异常悲剧,高端机尚可))

5、NEAREST_PREMULTIPLYALPHA(所有[PREMULTIPLYALPHA]结尾的TextureOptions与其它同名类差别仅在于是否支持根据Alpha值设置透明纹理,以下同)

6、BILINEAR_PREMULTIPLYALPHA

7、REPEATING_PREMULTIPLYALPHA

8、REPEATING_BILINEAR_PREMULTIPLYALPHA等静态对象。

以上TextureOptions实例都可以通过“TextureOptions.XXXXXX”的方式进行引用并设置给Texture。事实上,除了AndEngine提供的Texture渲染模式,我们也可以按照规则自行构建需要的TextureOptions。

比如构建一个混插的TextureOptions:
 

new TextureOptions(GL10.GL_LINEAR_MIPMAP_LINEAR, GL10.GL_LINEAR_MIPMAP_NEAREST, GL10.GL_REPEAT, GL10.GL_REPEAT, GL10.GL_MODULATE, true);
 

另外,TextureOptions默认还有DEFAULT模式,不过该模式实际引用为NEAREST_PREMULTIPLYALPHA,也就是纹理低画质但支持Alpha。如果您想要兼容低端机,则建议不要使用含有【BILINEAR】字样的AndEngine加载大图,而应直接使用TextureOptions.DEFAULT或TextureOptions.NEAREST_PREMULTIPLYALPHA;因为BILINEAR模式对硬件要求较高,如果以此模式将较大纹理放到低端机上渲染,速度很可能无法保证。但是,假如您的游戏只针对高端机用户便无需介怀了。

分享到:
评论

相关推荐

    AndEngine游戏开发示例

    AndEngine是一款专为Android平台设计的游戏开发框架,它简化了2D游戏的创建过程,让开发者无需深入理解底层图形库,就能快速构建出高质量的移动游戏。本示例旨在介绍如何利用AndEngine进行游戏开发,通过实例化引擎...

    andengine2.0开发的小游戏

    通过分析源代码和阅读教程,学习者可以掌握AndEngine的基本用法,例如设置场景、添加实体、实现物理行为、处理用户输入和更新游戏逻辑。 总的来说,这个压缩包文件提供了一个很好的机会,让对AndEngine感兴趣的...

    AndEngine学习

    ### AndEngine学习:环境配置与扩展包导入详解 AndEngine是一款专为Android平台设计的开源游戏开发框架,因其高效、灵活以及丰富的功能而备受开发者青睐。本文将详细解析AndEngine的环境配置步骤以及如何导入其扩展...

    andEngine > 学习1

    《AndEngine > 学习1》 AndEngine是一款开源的Android游戏开发框架,它基于OpenGL ES 2.0,提供了一套简洁、高效的游戏开发接口,使得开发者可以快速地创建2D游戏。这个主题的学习主要涵盖了AndEngine的基本概念、...

    andengine源码及demo

    AndEngine是一款专为Android平台设计的2D游戏开发框架,它提供了一套高效、易用的API,使得开发者能够快速构建各种2D游戏。AndEngine源码的分析和理解对于想要深入学习Android游戏开发的人来说至关重要。 1. **...

    AndEngine下载

    AndEngine是一款专为Android平台设计的2D游戏开发引擎,由Nathan Greno开发并维护。这个引擎以其轻量级、高效能和易用性而受到开发者们的青睐,特别是对于那些希望快速创建2D游戏或者没有太多图形编程经验的开发者来...

    使用AndEngine的一个DEMO

    "使用AndEngine的一个DEMO"是基于这个引擎开发的一个示例项目,它展示了AndEngine的基本用法和功能,帮助初学者理解和学习如何在实际中运用AndEngine。 首先,AndEngine的核心是它的Scene类,它是所有游戏内容的...

    andengine案例,jar包

    AndEngine是一款开源的游戏开发引擎,专门用于Android平台,它简化了2D游戏的开发过程,提供了丰富的图形渲染功能。这个压缩包包含的是AndEngine的核心库文件`andengine.jar`以及2013年的最新版本,这表明它可能包含...

    AndEngine入门篇

    AndEngine是一款专为Android平台设计的游戏开发引擎,它简化了2D游戏的创建过程,让开发者无需深入理解底层图形库,就能快速构建游戏。本入门篇将带你了解AndEngine的基本概念、架构以及如何开始你的第一个AndEngine...

    一个关于andengine中精灵 动作的简单例子

    在Android游戏开发中,AndEngine是一个非常受欢迎的2D游戏引擎,它允许开发者轻松地创建出高质量的2D游戏。本篇文章将详细讲解AndEngine中精灵(Sprite)及其动作(Animations)的应用,以一个简单的例子为基础,...

    AndEngine最新Jar包

    AndEngine是一款专为Android平台设计的游戏开发框架,它允许开发者使用Java语言进行2D游戏的开发,无需深入了解底层图形库,极大地简化了游戏制作过程。AndEngine以其高效、易用和社区活跃而受到众多独立开发者和...

    AndEngine的官网下载的Demo

    AndEngine是一款针对Android平台开发2D游戏的开源引擎,它以简单易用和高效著称。这个Demo是AndEngine官方网站提供的示例集合,用于帮助开发者更好地理解和学习如何使用AndEngine来构建游戏。以下是对AndEngine及其...

    最新AndEngine游戏引擎源码

    这个最新的AndEngine游戏引擎源码包,对于任何致力于Android游戏开发的人来说,都是一份极其宝贵的学习资料和开发工具。 AndEngine的核心优势在于其简洁的API设计,使得开发者能够快速地构建2D游戏,而无需深入了解...

    AndEngine 经典实例

    AndEngine是一款开源的Android游戏开发框架,专注于2D游戏的制作。它基于OpenGL ES 2.0,提供了高效且简洁的API,使得开发者能够快速构建高质量的2D游戏。AndEngine经典实例是针对这个框架的一系列官方示例,旨在...

    捕鱼海底捞andengine源代码

    在Android游戏开发领域,AndEngine是一个非常流行的2D游戏开发框架,以其高效、轻量级和易于学习的特点深受开发者喜爱。本篇文章将深入探讨AndEngine的核心概念,以及如何通过源代码来理解并学习这款经典游戏“捕鱼...

    andengine游戏引擎源码及实例

    源码是学习一个软件或库的最佳途径,因为它揭示了内部的实现细节和设计决策。AndEngine的源码结构清晰,注释丰富,对于初学者来说,这是一个绝佳的学习资源。 AndEngine的核心特性包括: 1. **OpenGL ES 2.0支持**...

    AndEngine游戏-DeliveryBoy-源代码

    《AndEngine游戏-DeliveryBoy-源代码》是一个用于学习AndEngine游戏开发的示例项目,其主要内容涵盖了AndEngine的基本使用、游戏逻辑构建以及资源管理等多个方面。AndEngine是一款流行的开源Android游戏开发引擎,它...

    AndEngine的jar包

    5. **活跃社区**:AndEngine拥有一个活跃的开发者社区,提供了丰富的教程和示例代码,便于学习和交流。 在使用AndEngine的jar包进行开发时,你需要了解以下几个关键知识点: **1. 安装与集成** - 将下载的...

    AndEngine 中文文档

    AndEngine是一款开源的、免费的2D游戏开发引擎,专为Android平台设计。这款引擎以其简单易用的API和高效性能而受到许多初级和中级游戏开发者喜爱。AndEngine的中文文档是开发者学习和掌握该引擎的重要资源,尤其对于...

    AndEngine 碰撞检测

    通过学习这个教程或运行提供的代码,开发者可以深入理解AndEngine中的碰撞检测机制,这对于创建具有互动性的游戏至关重要。对于初学者来说,这是一次很好的实践机会,可以提升对AndEngine和游戏开发的理解。

Global site tag (gtag.js) - Google Analytics