上节写到一个SurfaceView的游戏框架,经过测试发现SufaceView已经实现了双缓冲功能,没必要再去画蛇添足了,还有为了适应各种分辨率添加了一个适应屏幕的矩阵,在实际运行时发现帧数不高,运行不是很流畅,可能也是因为我测试的手机太烂,2年前的机器了,如果想要提高效率可以舍弃。今天要讲的是动画的显示和地图的绘制。
(一) 显示精灵动画
精灵动画就是图片一张一张显示,由于视觉暂留给人一种不断在动作的感觉,如下图。4张图片不断显示给人造成人物往各个方向行进的感觉。
我们要做的就是把上面的每个小图提取出来,进行绘制,下面是我写的一个绘图方法,按照从左往右,从上往下的顺序给上面的人物进行编号,从1开始。
/**
* 根据ID 绘制 地图块到指定位置
* @param canvas
* @param paint
* @param x 指定绘制的X坐标
* @param y 指定绘制的Y坐标
* @param bitmap 地图块集合
* @param tileWidth
* @param tileHeight
* @param tiledId
*/
public static void showTileById(Canvas canvas ,Paint paint, int x, int y,Bitmap bitmap,int tileWidth , int tileHeight , int tiledId) {
if(tiled