在AndEngine中,我们主要使用BaseGameActivity类,但并不是所有时候都是这样。
1. 在默认的布局xml文件中添加以下代码,此xml文件通常被称为main.xml。下面的代码片段添加AndEngine的RenderSurfaceView类到布局文件。将在设备上显示我们的游戏的视图:
深入开展认识生命周期配方本章中得到一个基本的AndEngine项目设立在我们的IDE,然后继续该怎么办呢...一节。
为了处理引擎,将以下代码添加任何基础AndEngine活动的手动创建:
1. Engine:首先,这个Engine对象对于大多数游戏的开发是不理想的,因为它对帧每秒方面没有绝对任何的限制。这样就会出现在两个独立的设备上,你会发现游戏运行速度的差异。又比如说两个独立的设备观看视频,是在相同的时间开始,运行速度更快的设备是可能首先完成视频播放的,而不是两个在同一时间完成。出于这个原因,可能会出现明显的问题,尤其当物理是一个游戏的一大部分。在游戏中调用这个引擎,不需要进行额外的操作。
2. FixedStepEngine:这是一个理想的引擎在游戏开发中使用,因为它迫使游戏循环以恒定的速度更新。这是通过基于时间的推移来更新游戏,而不是通过以设备的能力来更快的执行代码。FixedStepEngine的构造函数需要我们提供EngineOptions对象,和一个int值。int值定义了引擎每秒运行的次数。下面的代码创建一个引擎,每秒运行60次:
3. LimitedFPSEngine:LimitedFPSEngine引擎允许我们设置引擎每秒运行的帧数限制。这将导致引擎做一些内部的计算,如果首选的FPS之间的差异大于当前的FPS引擎实现,引擎将等待几分之一秒,然后再进行下一个更新。LimitedFPSEngine的构造函数需要两个参数,包括EngineOptions对象和一个int值,指定每秒的最大帧。下面的代码创建了一个引擎,将运行在每秒最大60帧的状态下:
4.SingleSceneSplitScreenEngine和DoubleSceneSplitScreenEngine:
下面的类可以作为BaseGameActivity类的替代品,其中存在一些差别。
1. The LayoutGameActivity class
LayoutGameActivity类是一个非常有用的活动类,它允许我们在一个普通的Android应用程序中合并AndEngine场景图形视图。另一方面,这个类,我们也可以包括原生的Android SDK的视图,如按钮,搜索栏,下拉框,额外的布局,或我们游戏中的任何视图。然而,使用这个类最常见的原因就是方便在游戏中植入广告。
创建一个LayoutGameActivity类需要进行一些额外的设置:1. 在默认的布局xml文件中添加以下代码,此xml文件通常被称为main.xml。下面的代码片段添加AndEngine的RenderSurfaceView类到布局文件。将在设备上显示我们的游戏的视图:
android:id="@+id/gameSurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
2.引用布局XML文件和RenderSurfaceView。这需要重写LayoutGameActivity类中的方法。下面的代码是假设main.xml文件在res /layout/文件夹中,在这种情况下,他们可以复制/粘贴到我们的LayoutGameActivity类中在第一个步骤完成后:
@Override
protected int getLayoutID() {
return R.layout.main;
}
@Override
protected int getRenderSurfaceViewID() {
return R.id.gameSurfaceView;
}
2. The SimpleBaseGameActivity and SimpleLayoutGameActivity classes
SimpleBaseGameActivity和SimpleLayoutGameActivity,作为建议,使被重写的生命周期方法比较容易处理。他们并不需要我们重写onPopulateScene()方法,最重要的是,我们并不需要回调已经定义过的回调方法,当我们定义完的回调。通过这些活动,我们可以简单地添加未实现的生命周期方法,AndEngine会为我们处理的回调。3. The SimpleAsyncGameActivity class
最后是SimpleAsyncGameActivity类。这个类包含了三种可供选择的生命周期方法名为onCreateResourcesAsync(),onCreateSceneAsync(),和onPopulateSceneAsync()伴随着常用的onCreateEngineOptions()方法。此Activity与其他的主要区别是,它为我们提供了加载条的“异步”的方法。下面的代码片断演示了我们如何再纹理被加载的情况下,增加进度条:@Override
public void onCreateResourcesAsync(IProgressListener pProgressListener)
throws Exception {
// Load texture number one
pProgressListener.onProgressChanged(10);
// Load texture number two
pProgressListener.onProgressChanged(20);
// Load texture number three
pProgressListener.onProgressChanged(30);
//我们喜欢什么值,都可以设置到进度中
//每一个额外的步骤通过onCreateResourcesAsync...
}
4. 准备工作
Carry out the Know the life cycle recipe in this chapter to get a basic AndEngine project set up in our IDE, then continue on to the How to do it... section.深入开展认识生命周期配方本章中得到一个基本的AndEngine项目设立在我们的IDE,然后继续该怎么办呢...一节。
5. 怎么做
为了让我们正确地定义一个特定的引擎对象,为我们的游戏使用,我们必须重写onCreateEngine()方法,这是AndEngine的启动过程的一部分。为了处理引擎,将以下代码添加任何基础AndEngine活动的手动创建:
public Engine onCreateEngine(EngineOptions pEngineOptions) {
return super.onCreateEngine(pEngineOptions);
}
6. 它如何工作
以下是AndEngine对象提供的各种引擎,以及一个简短的代码片段显示如何设置的引擎对象的概述:1. Engine:首先,这个Engine对象对于大多数游戏的开发是不理想的,因为它对帧每秒方面没有绝对任何的限制。这样就会出现在两个独立的设备上,你会发现游戏运行速度的差异。又比如说两个独立的设备观看视频,是在相同的时间开始,运行速度更快的设备是可能首先完成视频播放的,而不是两个在同一时间完成。出于这个原因,可能会出现明显的问题,尤其当物理是一个游戏的一大部分。在游戏中调用这个引擎,不需要进行额外的操作。
2. FixedStepEngine:这是一个理想的引擎在游戏开发中使用,因为它迫使游戏循环以恒定的速度更新。这是通过基于时间的推移来更新游戏,而不是通过以设备的能力来更快的执行代码。FixedStepEngine的构造函数需要我们提供EngineOptions对象,和一个int值。int值定义了引擎每秒运行的次数。下面的代码创建一个引擎,每秒运行60次:
@Override
public Engine onCreateEngine(EngineOptions pEngineOptions) {
return new FixedStepEngine(pEngineOptions, 60);
}
3. LimitedFPSEngine:LimitedFPSEngine引擎允许我们设置引擎每秒运行的帧数限制。这将导致引擎做一些内部的计算,如果首选的FPS之间的差异大于当前的FPS引擎实现,引擎将等待几分之一秒,然后再进行下一个更新。LimitedFPSEngine的构造函数需要两个参数,包括EngineOptions对象和一个int值,指定每秒的最大帧。下面的代码创建了一个引擎,将运行在每秒最大60帧的状态下:
public Engine onCreateEngine(EngineOptions pEngineOptions) {
// Create a limited FPS engine, which will run at a maximum of 60 FPS
return new LimitedFPSEngine(pEngineOptions, 60);
}
4.SingleSceneSplitScreenEngine和DoubleSceneSplitScreenEngine:
SingleSceneSplitScreenEngine和DoubleSceneSplitScreenEngine让我们创造一个游戏有两个独立的镜头,无论是一个单一的场景,最普遍使用的单人游戏,或在单个设备上的两个场景的多人游戏。这些只是例子,但是这两款引擎可以有广泛的用途,包括迷你地图,多角度,菜单系统,以及更多。请参阅第4章,创建一个分屏游戏,这些类型的引擎对象更具体的细节。
原文地址: