Android平台上的SpriteTileLayer设计
Android没有提供javaMe里面的Sprite, TileLayer 等,但自己可以设计,为图形处理建立一个基本的框架,同时可以快速将javaMe上的应用移植到Android平台上。这个框架依照MIDP中javax.microedition.lcdui.game包设计的: Layer类: import android.graphics.Canvas; import android.graphics.Paint; public abstract class Layer { public abstract void paint(Canvas canvas,Paint paint); public abstract void paint(Canvas canvas,Paint paint,int x,int y); } Sprite类: import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; public class Sprite extends Layer{ private int length = 0;// 帧序列长度 private int currentPosition = 0;//当前帧序列下标 private int[][] framesXY = null;//各个帧序列在图片的坐标 private int frameWidth = 0;//帧的宽度 private int frameHeight = 0;//帧的高度 private Bitmap bigFrames = null;//大的图片 private int cols = 0; private int rows = 0; private int PositionX = 0;//精灵的X坐标 private int PositionY = 0;//精灵的Y坐标 private int[] frameSequence = null;//加入的帧序列 private int sequencePosition = 0;//加入的帧序列的显示下标 public Sprite(Bitmap image,int frameWidth,int frameHeight) { //初始化 this.bigFrames = image; this.frameWidth = frameWidth; this.frameHeight = frameHeight; framesXY = initSprite(image, frameWidth, frameHeight); this.length = framesXY.length; } //初始化精灵 private int[][] initSprite(Bitmap bitmap,int frameWidth,int frameHeight) { int imageWidth = bitmap.getWidth(); int imageHeight = bitmap.getHeight(); this.cols = Math.round(imageWidth/frameWidth);//列数 this.rows = Math.round(imageHeight/frameHeight);//行数 int[][] tempXYs = new int[cols*rows][2]; for(int i=0,k=0;iframeSequence.length-1) { sequencePosition = 0; } currentPosition = frameSequence[sequencePosition]; } } //获得当前帧序列的上一个帧 public void prevFrame() { if(this.frameSequence==null) { currentPosition--; if(currentPosition<0) { currentPosition = length-1; } }else { sequencePosition--; if(sequencePosition=0 } } //设置位置 public void setPosition(int positionX,int positionY)