前面已经把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游戏
那么第四章的例子才是非常值得借鉴的