GameSurfaceView的初始化
注意:其中super(context)需要明确调用其父类的构造方法。
GameSurfaceView的初始化在构造函数中完成即可。在构造函数中,需要获取子类对屏幕缓冲大小的定义,因此除Context参数外,还需要另外增加两个变量renderWidth和renderHeight。GameSurfaceView的函数头如下:
public GameSurfaceView(Context context, int renderWidth, int renderHeight){
} |
在获取了屏幕缓冲的大小后,可以进行初始化工作了。初始化的顺序并不是非常重要,因此这段代码的顺序可以自行安排。首先可以将除渲染相关的内容进行初始化,如下:
super(context);
holder = getHolder(); holder.addCallback(this); gestureDetector = new GestureDetector(context, this); setLongClickable(true); |
holder的获取并将回调接口传给holder以实现View的状态转换。手势探测器的初始化并将长按设置为生效。若没有设置长按则手势控制失效。
接下来就是关于渲染的初始化。渲染首先需要保存的是实际屏幕的大小和缓冲屏幕的大小,接下来就可以创建缓冲屏幕以及获取缓冲屏幕的画布和画笔的初始化。代码如下:
actulWidth = getWidth();
actulHeight = getHeight(); this.renderWidth = renderWidth; this.renderHeight = renderHeight; renderMap = Bitmap.createBitmap(renderWidth, renderHeight, Bitmap.Config.ARGB_8888); renderCanvas = new Canvas(renderMap); renderPaint = new Paint(); |
至此,完成GameSurfaceView的初始化工作。