【AndEngine游戏开发】第一章:AndEngine游戏结构---1.了解生命周期

来源:互联网 发布:hdgame.min.js 编辑:程序博客网 时间:2024/06/06 10:57

在本章中,我们将要学习构建一个AndEngine游戏的主要组成部分。这些主题包括:

了解生命周期

选择我们的引擎类型

选择一个分辨率政策,

创建对象工厂

创建游戏管理器

引入的声音和音乐

使用不同类型的纹理

应用纹理选项

使用AndEngine字体资源

创建资源管理器

保存和加载游戏数据

介绍

AndEngine最吸引人的地方是令人难以置信的轻松的开发游戏。在学习AndEngine几个星期后,就可以开始设计和编码一个游戏,这对于AndEngine来说也不是太牵强,但是这并不是说,你将具备制作完美游戏的能力。当我们不明白引擎是如何工作的时候,编码任务就会是一个单调乏味的过程。所有我们应该了解AndEngine和游戏结构的主要组成部分,以创建精确的,有组织的和可扩展的项目。

在本章中,我们要去了解AndEngine和一般游戏编程的一些最必要的组成部分。我们要看一看一些将有助于我们快速而高效地创建各种游戏基础的类。此外,我们将讨论一些资源和对象类型之间的差异。

了解生命周期

重要的是要了解游戏初始化时的操作顺序。一个游戏的基本需求,包括创建引擎,加载游戏的资源,并建立初始屏幕和设置,这是创造一个AndEngine游戏的基础。但是,如果我们需要游戏具有更多的多样性,这就需要了解AndEngine的整个生命周期。

准备工作

请参阅名为PacktRecipesActivity的代码包中的类。(本书作者写的案例,需要的同学在评论中留邮箱)

如何做到这一点...

AndEngine生命周期包括了一些方法,我们负责直接定义。这些方法包括创建EngineOptions对象,创建Scene对象,用实体填充场景。这些方法按以下顺序执行:

1. 定义 onCreateEngineOptions() 方法

public EngineOptions onCreateEngineOptions() {// Define our mCamera objectmCamera = new Camera(0, 0, WIDTH, HEIGHT);//声明和定义引擎对象EngineOptions engineOptions = new EngineOptions(true,ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(),mCamera);//这个操作是很有必要的//激活锁定选项关闭屏幕//如果游戏处于闲置状态,则关闭屏幕engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);//返回的engineOptions对象return engineOptions;}


 

2. 定义 onCreateResources()

public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) {pOnCreateResourcesCallback.onCreateResourcesFinished();}


 

3. 定义onCreateScene()

public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) {// Create the Scene objectmScene = new Scene();//通知回调函数,我们完成创建了scene对象,并返回// mScene to the mEngine object (自动处理)pOnCreateSceneCallback.onCreateSceneFinished(mScene);}


 

4. 定义onPopulateScene()

@Overridepublic void onPopulateScene(Scene pScene,OnPopulateSceneCallback pOnPopulateSceneCallback) {// onPopulateSceneFinished(),类似于the resource and scene的回调//一旦我们完成填充场景,就会被执行。pOnPopulateSceneCallback.onPopulateSceneFinished();}


 

这些如何工作?

这些代码是所有AndEngine游戏的基础。我们已经创建了一个主要的activity类,作为应用程序的入口点。该activity包含四个主要的AndEngine活动的生命周期方法。我们在这些方法中开始创建EngineOptions选项,创建资源,创建场景,并设计场景。

在第一步中,我们重写引擎的onCreateEngineOptions()方法。在此方法中,我们的主要重点是我们的Camera对象,以及我们的EngineOptions对象实例化。这两个对象的构造函数允许我们定义我们的应用程序的显示属性。此外,我们通过调用engineOptions.setWakeLockOptionsWakeLockOptions.SCREEN_ON)方法来处理程序闲置时候的状态。

第二步,我们将继续重写onCreateResources()方法,我们可以在这个方法中创建和设置所需的游戏资源。这些资源可能包括纹理,声音和音乐,和字体。在onCreateResources()方法的最后,我们必须调用pOnCreateResourcesCallback.onCreateResourcesFinished()方法。

第三步涉及到Scene对象的实例化和设置。设置场景可以很简单,也可以更复杂,它可能包括设置触摸事件监听器,更新处理程序,等等。一旦我们完成设定场景,我们必须调用pOnCreateSceneCallback.onCreateSceneFinishedmScene)方法

最后重写onPopulateScene()方法。这种方法是在专门用于连接子实体的场景。与前两个步骤一样,在最后我们必须调用pOnPopulateSceneCallback.onPopulateSceneFinished()方法

在下面的列表中,我们将介绍生命周期方法从一个activity的开始直到结束。

生命周期的顺序如下:

onCreate : 这种方法是在Android SDK的原生应用程序的入口点。在AndEngine中,此方法只调用BaseGameActivity类中的onCreateEngineOptions()方法,然后返回选项到游戏引擎。

onResume: 这是另一款Android SDK的本地方法。在这里,我们只是从EngineOptions对象中获取锁定设置,并继续为RenderSurfaceView对象调用onResume()方法。

onSurfaceCreated: 在activity第一次启动的过程中此方法将调用onCreateGame()方法,或注册一个布尔变量作为真正的资源重新加载,如果此前这个活动已经被部署。

onReloadResources: 此方法将重新加载游戏资源,如果我们的应用程序从最小化成为用户的焦点。应用程序初始化时这个方法不会被调用。

onCreateGame:  这里会处理AndEngine生命周期接下来三个回调函数的执行的顺序。

onCreateResources: 这种方法让我们创建游戏初始化时所需要的资源。这些资源包括纹理,声音和音乐,和字体等。

onCreateScene: 在这里,我们处理游戏场景对象的初始化。在这个方法中可能会进行实体填充场景的操作,但是,这种操作通常最好在onPopulateScene()中执行。

onPopulateScene: 在生命周期的onPopuplateScene()方法中,我们只是完成了场景,但这些只是生命周期回调函数中的一小部分。当我们的应用程序第一次启动时,这个方法应该可以用来定义场景的视觉效果。请注意,在这一步中场景已经被创建并应用到引擎中。在某些情况下是可以看到实体填充场景,如果没有加载屏幕或闪屏,并且如果有大量的实体连接。

onGameCreated: 这意味着onCreateGame()序列执行完成,如果有必要的话可以重新加载资源,否则什么都不做。是否重新加载资源这取决于onSurfaceCreated方法返回的布尔变量。

onSurfaceChanged: 当游戏的取向发生变化时,会调用这个方法。从风景到人像模式,反之亦然。

onResumeGame: 当activity循环启动时,会调用这个方法。如果我们的activity在这步中没有任何问题,引擎将调用start(),激活游戏的更新线程。

游戏最小化终止时候的生命周期,如下:

onPause: 当activity最小化或终止的时候,会第一个调用这个方法。这是原生的Android暂停方法,它调用RenderSurfaceView对象的暂停方法,并在游戏引擎上恢复唤醒锁的方法。

onPauseGame: 接下来,onPause()的AndEngine实现方法只是简单地调用stop()方法,造成引擎的更新处理程序停止工作。

onDestroy: 在onDestroy()方法中,AndEngine清除引擎的管理类ArrayList对象内包含的所有图形资源。这些管理者包含在VertexBufferObjectManager类,FontManager类中,ShaderProgramManager类,最后是TextureManager类。

onDestroyResources: 该方法的名称可能会有点误导,因为我们已经卸载了大部分的资源在onDestroy()。这个方法释放了所有声音和音乐的对象,通过调用他们管理者的releaseAll()方法。

onGameDestroyed: 最后,我们需要调用AndEngine完整的生命周期中的最后一个方法。这个方法中不会有一大堆的方法,AndEngine只是设置一个mGameCreated的布尔变量为false,规定此activity不再运行。

在下面的图片中,我们可以看到完整的生命周期,当游戏被创建,最小化或销毁:

第一章:AndEngine游戏结构---1.了解生命周期

由于AndEngine生命周期的异步性质,其中的某些方法可能会多次执行。

 

原文地址:

http://blog.sina.com.cn/s/blog_a26142180101a5th.html

0 0
原创粉丝点击