没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
作者:孟君 QQ:2121939 刘晖 QQ:175204398 软件大赛 AndEngine 赛题群:125550662
1
AndEnginee Tutorial
项目站点:http://www.andengine.org
项目地址:http://code.google.com/p/andengine
示例地址:http://code.google.com/p/andengineexamples
AndEngine 是一款以 OpenGLES 方式进行画面渲染的 2D 游戏引擎,可以运行在支持
Android 1.6 及以上版本的系统当中。应该说,相较 Libgdx 引擎,AndEngine 拥有更多的游
戏组件与扩展功能。并且与 Libgdx 不同,它在默认情况下已经可以支持中文,采用屏幕坐
标系绘也更符合一般 Android 绘图习惯。
结构概览
基础知识
1. Activity
由于 AndEngine 是专供 Android 使用的 2D 游戏引擎,所以作为启动类的 Activity 肯定必不
可少,而 AndEngine 也理所应当的提供给我们这样一个 Activity,那就是 BaseGameActivity。
一个标准的 AndEngine 应用,至少应该对 BaseGameActivity 做如下继承:
作者:孟君 QQ:2121939 刘晖 QQ:175204398 软件大赛 AndEngine 赛题群:125550662
2
2. 回调方法
其中四个必须被重载函数的启动顺序如下:
onLoadEngine->onLoadResources->onLoadScene->onLoadComplete
具体的讲,AndEngine 会首先加载 Engine 类实例通知系统游戏引擎的基本运行方式,而后
加载游戏资源,其次加载游戏场景实例,最后通过 onLoadComplete 通知用户加载完毕并
于此进行善后工作。
此外,由于 BaseGameActivity 类重载了父类 Activity 的 onResume 与 onPause 函数以保
证其自身的正常运行,所以不建议在继承 BaseGameActivity 时再次重载上述函数(重载的
话不要忘记 super 调用),推荐直接重载 AndEngine 提供的 onGamePaused 和
onGameResumed 实现同等功能。
上文介绍了 AndEngine 的基本运行机制与运行流程,然而仅仅这样 AndEngine 还是无法实
际运行,因为 Engine 与 Scene 都没有获得具体实现。假如我们想要在屏幕上显示出随机出
现的彩色线段,那么就要把创建的彩色线段加入 Scene。
3. BaseGameActivity
BaseGameActivity 是整个游戏的主体部分,它包含了一个游戏引擎并且还包有一个
SurfaceView 对象,这个 SurfaceView 对象专门提供给引擎在上面进行绘图。一个这样的
Activity 只能包含一个游戏引擎,如果想要进行界面 Activity 的转换,可以使用 Android 系统
本身提供的 Activity 转换机制来实现。
public class TestActivity extends BaseGameActivity{
@Override
public Engine onLoadEngine() {
return null;
}
@Override
public void onLoadResources() {
}
@Override
public Scene onLoadScene() {
return null;
}
@Override
public void onLoadComplete() {
}
}
作者:孟君 QQ:2121939 刘晖 QQ:175204398 软件大赛 AndEngine 赛题群:125550662
3
4. Engine
游戏引擎实际上是把游戏分成了各不相关的很多时间片段,在每个时间片段上同步绘制
和更新整个游戏场景(Scene)上所有在游戏中正处在活动状态的对象。通常情况下一
个引擎驱动一个游戏场景,当然除了 SplitScreenEngine。
5. Camera
由于不能把整个游戏场景都展示在显示屏上,摄像机( Camera)截取一块在游戏场景中
的用来显示在显示屏上的矩形区域。通常情况下,一个场景(Scene)只使用一个摄像机
(Camera)。Camera 类有几个子类,用于放大缩小摄像机的视野和平滑过渡摄像机的
移动。
6. Scene
场景类 Scene 是所有在游戏中活动对象的根容器,此容器可以容纳各种在游戏中显示的
游戏对象。通常情况下,Scene 分为很多层,每一层都可以容纳特定数量(固定数量或
者动态数量)的对象。
7. Entity
实体就是可以在场景中被绘制出来的对象,例如游戏中的精灵们,矩形等各种图形,文
字和直线。实体通常都会有以下几种属性:位置、旋转角度、放大缩小倍数、颜色等。
8. Engine Option
定义引擎对象 Engine 的参数对象。
9. RatioResolutionPolicy
IResolutionPolicy 接口的实现,这个对象告诉 AndEngine 如何处理不同屏幕大小的设备。
RatioResolutionPolicy 会根据特定的长宽比例最大化游戏视图 SurfaceView 对象,这样游
戏对象就不会因为缩放而变形。
作者:孟君 QQ:2121939 刘晖 QQ:175204398 软件大赛 AndEngine 赛题群:125550662
4
案例
讲解案例
绘制直线
LineExample.java
public class LineExampleActivity extends BaseGameActivity {
private static final int CAMERA_HEIGHT = 480;
private static final int CAMERA_WIDTH = 720;
private Engine mEngine;
private Camera mCamera;
@Override
public Engine onLoadEngine() {
// 创建一个摄像头,设置屏幕是720宽,480高
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
// 创建游戏引擎
return new Engine(
// 引擎参数1.全屏否2.横屏还是竖屏3.屏幕分辨率4.引擎用的摄像头
new EngineOptions(true, ScreenOrientation.LANDSCAPE,
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
mCamera));
}
@Override
public void onLoadResources() {
// 此处读取游戏资源图片
}
@Override
public Scene onLoadScene() {
//创建场景
Scene scene = new Scene();
//设置场景的背景,色彩采用RGB值,值是0~1之间的float数
scene.setBackground(new ColorBackground(0.98f, 0.56f, 0.012f));
for (int i = 0; i < 100; i++) {
float x1 = (float) (Math.random() * CAMERA_WIDTH);
float x2 = (float) (Math.random() * CAMERA_WIDTH);
float y1 = (float) (Math.random() * CAMERA_HEIGHT);
float y2 = (float) (Math.random() * CAMERA_HEIGHT);
//创建一条直线,直线的起点和终点都是随机产生的
Line line = new Line(x1,y1,x2,y2);
//设置线段的颜色,颜色的设置方法同背景色
line.setColor((float)Math.random(), (float)Math.random(),
(float)Math.random());
//把线段添加到场景中
scene.attachChild(line);
}
return scene;
}
@Override
public void onLoadComplete() {
}
}
作者:孟君 QQ:2121939 刘晖 QQ:175204398 软件大赛 AndEngine 赛题群:125550662
5
处是 BaseGameActivity 的回调方法,在 Activity 创建的时候一次调用这 4 个方法
onLoadEngine、onLoadResource、onLoadeScene 和 onLoadComplete。
onLoadEngine 方法创建用来创建适应当前 Activity 的引擎,初始化这个引擎所用的摄像
头 Camera 对象,设置屏幕的长宽和屏幕的全屏与否的各个属性。方法的最后返回一个
引擎对象。
onLoadeResource 方法加载图片资源等提供给创建给 cene 使用。
onLoadeScene 方法创建游戏场景,给游戏场景设置背景色。在循环中创建线段对象 Line,
Line 继承自 Entity 类,Entity 就是在场景中运动的对象,例如背景对象、游戏主角等。
这些游戏场景中的对象,最终要通过 scene 对象的 attachChild 方法被添加到 Scene 中来。
练习案例
在屏幕上绘制随机颜色的矩形图案
精灵与动画(一)
基础知识
1. Texture
Texture 就是在在村中存储的图像单元。在 Android 上 Texture 的宽度和高度必须是 2 的
幂,所以 AndEngine 就把几个图像安排在一个 Texture 对象中,这样使用起来更加方便。
(在下文中进行介绍)
剩余79页未读,继续阅读
资源评论
- wodeleiyu2014-01-11还行,有一定的实用价值
kisspycn
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功