《Pro Android Game》释义 (二)

来源:互联网 发布:jq 判断数组是否为空 编辑:程序博客网 时间:2024/05/16 08:06

前面已经把ArcadeGame类和一些基础的功能类介绍完了

现在就剩SpaceBlasterGame类了

 

其实作者在编写代码时就设计好了游戏的结构

ArcadeGame类是实现基础功能的

通过继承ArcadeGame类可以实现特定游戏的详细设计

而SpaceBlasterGame类就是用于这个特定的游戏

 

在SpaceBlasterGame类的开始部分

作者定义了许多资源字段

如游戏名 mContext 以及许多Paint对象 

作者也在书中描述了这些字段的功能

像mTextPaint  带有特定风格 颜色的Paint对象 用于绘制文字

mBitmapPaint 绘制位图的Paint对象

等等

 

// Game name
public static final String NAME = "SpaceBlaster";
// Refresh rate (ms)
private static final long UPDATE_DELAY = 40;
private Context mContext;
// For text
private Paint mTextPaint = new Paint();
// For Bitmaps
private Paint mBitmapPaint = new Paint();
private Paint mLaserBarPaint = new Paint();
private Paint mShieldBarPaint = new Paint();
private Paint mShieldPaint = new Paint();

 

 

构造函数设定得比较简单

主要就设置了mContext 和 更新周期

就不多加叙述了

 

 

接着比较重要的是游戏初始化函数public void initialize()

作者把大量的游戏资源加载代码写在这里

如加载位图

ship = getImage(R.drawable.sb_ship);
bullet = getImage(R.drawable.sb_bullet);

 

 

 

最后的一部分代码 个人觉得比较有用处的是按键处理的代码

通过Android定义的三个按键事件方法

作者将自己编写的游戏处理方法加入进去

onKeyUp 在按下某个按键后触发

onKeyDown 在释放某个按键后触发

onTouchEvent 接收点击屏幕事件

 

作者分别把上下左右的移动事件定义到键盘区了

并把开火定义为space键 开始游戏定义为S键

暂停游戏定义为E键 推出游戏为Q键

 

有意思的是

作者在屏幕响应中加入了 移动 开始游戏 开火等处理

 

 

public boolean onKeyUp(int keyCode, KeyEvent event)

public boolean onKeyDown(int keyCode, KeyEvent event)

public boolean onTouchEvent(MotionEvent event)

 

 

到这里 一个2D游戏的基础模型以及初见端倪

个人以为 第三章例子更多是讲解基础的游戏架构

如果想要开发一个完善的Android 2D游戏

那么第四章的例子才是非常值得借鉴的