2.1 图层结构

2.1.1 图层的组成元素

我们将各个图层的游戏元素抽象成某种数据结构,为每一组图层的数据结构分配一个图层ID,并定义或选择合适的数据来组织这些图层。

游戏元素的数据结构在ImageModel.java中定义,包括两个属性:Bitmap类型的元素图像img和Matrix类型的元素处理矩阵matrix;程序在绘制图层的时候,通过ImageModel的对象来获取相应的元素图像、变换矩阵和图像大小,这些方法通常被封装在游戏引擎当中,这里我们使用的游戏引擎是自定义的,因此需要自己定义可绘制接口来封装这些方法。程序中的可绘制接口是Drawable.java,用ImageModel.java来继承。代码清单2-1、2-2分别表示自定义游戏引擎的可绘制接口类Drawable.java和游戏元素实体类ImageModel.java。

代码清单2-1 自定义游戏引擎中的可绘制接口类

      public interface Drawable {
        public Matrix getPicMatrix();     // 获取图片旋转的矩阵表示
        public Bitmap getCurrentPic();    // 获取当前动作图片的资源
        public int getPicWidth();         // 返回图片的宽度
        public int getPicHeight ();       // 返回图片的高度
      }

代码清单2-2 游戏元素实体类

      public class ImageModel implements Drawable{
        private Bitmap img;
        private Matrix matrix = new Matrix();
        public void setPicMatrix(Matrix matrix){
            this.matrix = matrix;
        }
        @Override
        public Matrix getPicMatrix() {
            // TODO Auto-generated method stub
            return matrix;
        }
        public void setCurrentPic(Bitmap img){
            this.img = img;
        }
        @Override
        public Bitmap getCurrentPic() {
            // TODO Auto-generated method stub
            return img;
        }
        @Override
        public int getPicWidth() {
            // TODO Auto-generated method stub
            return img.getWidth();
        }
        @Override
        public int getPicHeight() {
            // TODO Auto-generated method stub
            return img.getHeight();
        }
      }