现在的J2ME游戏参考书都是描述MID2.0,给我们这些学习的新手带来不少麻烦。因为例如Sprite类在游戏开发中很常用到,可是1.0是不支持的。但换句话讲2.0不过是比1.0多提供了几个类。那我们就常试着自己在1.0中写出这些类的方法,下面我们就来写Sprite类的方法
Sprite(Image img,int frameWidth,int frameHeight)
先理解下这个方法的意思,是从大图上依次读取frameWidth*frameHeight大小的图片存入默认数组。
以序列号0开头标记。
我们试图创建Image.createImage(frameWidth,frameHeight)区域。然后将对应序列的图描绘,最后保存到相应的数组。
下面是我的Sprte方法
private Image[] sprite;//类变量储存图片
public void Sprite(Image img,int frameWidth,int frameHeight)
{
int m=img.getWidth()/frameWidth; / /确定数组大小
int n=img.getHeight()/frameHeight;
int k=m*n; //数组大小
sprite=new Image[k];//初始化要保存的数组
Image a=Image.createImage(frameWidth,frameHeight);//创建描绘区域,在双缓冲时常见
Graphics g=a.getGraphics();
for(int i=0;i<k;i++){
g.drawImage(img,-(i/m)*frameWidth,-(i%m)*frameHeight,0);//0是锚点,左上的意思
/*新手比较难理解img,-(i/m)*frameWidth,-(i%m)*frameHeight,0
我们这里确定m,n 来看图
0, 1 , 2, 3, 4
5, 6, 7, 8, 9
10,11 ,12,13,14
m=5,n=3,图示为对应序列号。k=5*3=15,那么将它对应二维数组。[0][0]对应0,
[1][1]对应6,那么[i/m][i%n]对应i ,之后不用我解释了吧。 */
sprite[i]=Image.createImage(a);//将所选区域存入数组
}
}