成员变量主要分为5类。第一类是与SurfaceView控制相关的,只有一个即SurfaceHolder;第二类是游戏状态,定义为int类型变量gameState;第三类为线程管理;第四类为手势控制;第五类是屏幕渲染。
►SurfaceHolderSurfaceHolder定义如下:
SurfaceHolder holder;
|
其定义非常简单,其初始化及使用在后续相关方法的介绍中陆续进行。由于其仅在GameSurfaceView中使用,因此不需要对其增加public修饰。
►游戏状态gameState定义如下:
public int gameState;
|
由于gameState需要其子类频繁使用,以判断当前游戏状态,因此需要将其定义为public以方便子类随时使用。
在定义gameState后还需要定义其相关参数的具体意义,因此需要增加定义一系列的常量,以便于在开发过程中识别其各个数值的意义。定义如下:
public final int GAMESTATE_LOADING = 0;
public final int GAMESTATE_LOGO = 1; public final int GAMESTATE_MENU = 2; public final int GAMESTATE_PLAY = 3; public final int GAMESTATE_END = 4; |
此时,gameState的赋值及判断均可由上述常量进行,并且可以根据需要进行扩充。但需要注意的是,此游戏框架所适应的游戏类型以及后续各相关方法中不同状态的操作要修改完整,否则容易出现状态紊乱。
►线程管理线程管理需要三个变量,第一个是线程对象,其后两个分别是线程的暂停开关与结束开关。线程管理成员变量定义如下:
Thread gameThread;
/** * true:Pouse the game thread; * false:Running the game thread; */ boolean threadPouse; /** * true:End the game thread; * fasle:Running the game thread; */ boolean threadEnd; |
通过对暂定和结束两个开关的控制可以有效的控制游戏主线程的运作,以达到控制游戏的目的。
►手势控制由于手势的使用是基于屏幕事件的,所以需要先行处理屏幕事件,之后需要判断是否添加手势。因此需要一个手势使用开关以及一个手势探测器,其定义如下:
public boolean isUseGesture = false;
public GestureDetector gestureDetector; |
在默认情况下,将手势开关关闭。
►屏幕渲染由于屏幕渲染涉及到不同机型的移植问题,我们将在下一节单独开进行屏幕渲染的介绍。