import javax.microedition.lcdui.*;
import java.io.*;
import javax.microedition.lcdui.game.Sprite;
public class Data {
/**
* 加载所有资源
*/
public static final void loadRes(){
loadBigImage();//加载整图资源
if(allImage == null ) allImage = new Image[allItemData.length];
for (int i = 0; i < allItemData.length; i++) { //将每个切片转化为独立的Image对象
int transform = Sprite.TRANS_NONE;//默认不翻转情况
if (allItemData[i].length == 6) { //需要翻转
switch (allItemData[i][5]) {
case 1: //翻转数值对应翻转类型,270度翻转
transform = Sprite.TRANS_MIRROR_ROT270;
break;
case 2://翻转数值对应翻转类型,180度翻转
transform = Sprite.TRANS_MIRROR_ROT180;
break;
case 3://翻转数值对应翻转类型,90度翻转
transform = Sprite.TRANS_MIRROR_ROT90;
break;
case 4://翻转数值对应翻转类型,水平镜像
transform = Sprite.TRANS_MIRROR;
break;
case 5://翻转数值对应翻转类型,垂直镜像
transform = Sprite.TRANS_MIRROR_ROT180;
break;
default:
System.out.println("Transform erro!");
break;
}
}
//根据切片信息保存每个切片的Image
allImage[i] = Image.createImage(drawImg[allItemData[i][0]], allItemData[i][1], allItemData[i][2],
allItemData[i][3], allItemData[i][4], transform);
}
}
public static Image[] allImage;//所有切片的Image
private static Image[] drawImg;//整图资源的Image
private static void loadBigImage(){
if(drawImg == null) drawImg = new Image[11];
try {
//使用到的图片表
drawImg[0] = Image.createImage("/t1.png"); //被使用25次
drawImg[1] = Image.createImage("/p01.png"); //被使用29次
drawImg[2] = Image.createImage("/d01.png"); //被使用37次
drawImg[3] = Image.createImage("/j01.png"); //被使用8次
drawImg[4] = Image.createImage("/g01.png"); //被使用9次
drawImg[5] = Image.createImage("/sum.png"); //被使用3次
drawImg[6] = Image.createImage("/t2.png"); //被使用6次
drawImg[7] = Image.createImage("/g02.png"); //被使用7次
drawImg[8] = Image.createImage("/dj.png"); //被使用4次
drawImg[9] = Image.createImage("/g03.png"); //被使用25次
drawImg[10] = Image.createImage("/ui.png"); //被使用2次
}
catch (IOException ex) {
}
}
public static short[][][] npcItemDataSize;//保存动画数据中每帧的尺寸
/**
*获得动画数组中每帧的宽、高及x,y的偏移
*/
protected static final void getnpcItemDataSize()
{
/*定义三维数组来表示动画数组npcItemData中的每帧的宽度、高度及偏移*/
Data.npcItemDataSize = new short[npcItemData.length][][]; //大小相同
for (int i = 0; i < npcItemData.length; i++)
{
/*分别对每个对象元素进行计算*/
Data.npcItemDataSize[i] = new short[npcItemData[i].length][];
for (int j = 0; j < npcItemData[i].length; j++)
{
/*我们保存的是对象元素的每帧的x偏移、y偏移、宽度、高度,所以应该是帧*4*/
Data.npcItemDataSize[i][j] = new short[npcItemData[i][j].length * 4];
for (int k = 0; k < npcItemData[i][j].length; k++)
{
/*假设初始x的最小偏移为100,前提是不会超过每帧宽度、高度不超过200*/
int minX = 100;
/*假设初始x的最大偏移为-100*/
int maxX = -100;
/*假设初始右y的最小偏移为100*/
int minY = 100;
/*假设初始y的最小偏移为100*/
int maxY = -100;
/*寻找minX,maxX,minY,maxY*/
for (int m = 0; m < npcItemData[i][j][k].length / 3; m++)
{
/*每个切片的信息,每个拼块的信息*/
int ID = npcItemData[i][j][k][m * 3 + 0]; //对象元素ID
int offsetX = npcItemData[i][j][k][m * 3 + 1]; //x偏移
int offsetY = npcItemData[i][j][k][m * 3 + 2]; //y偏移
int width = Data.allItemData[ID][3]; //切片的宽度
int height = Data.allItemData[ID][4]; //高度
/*翻转的情况,宽、互换*/
if (Data.allItemData[ID].length == 6 && (Data.allItemData[ID][5] == 1 || Data.allItemData[ID][5] == 3))
{ //这里遇到翻转情况为270度与90度翻转此时的翻转需要更换长度与宽度才可计算
int temp = width;
width = height;
height = temp;
}
/*当此拼块的实际偏移小于预设偏移时,更换为此块的实际偏移*/
if (minX > offsetX - width / 2)
{
minX = offsetX - width / 2;
}
/*当此拼块的实际偏移大于预设最大偏移时更换为此块的实际偏移*/
if (maxX < offsetX + width / 2)
{
maxX = offsetX + width / 2;
}
/*同理y的计算*/
if (minY > offsetY - height / 2)
{
minY = offsetY - height / 2;
}
if (maxY < offsetY + height / 2)
{
maxY = offsetY + height / 2;
}
}
/*获得最小偏移*/
Data.npcItemDataSize[i][j][k * 4 + 0] = (short) minX;
/*获得最大偏移*/
Data.npcItemDataSize[i][j][k * 4 + 1] = (short) minY;
/*宽度为最大偏移与最小偏移之差*/
Data.npcItemDataSize[i][j][k * 4 + 2] = (short)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论











收起资源包目录





































































































共 150 条
- 1
- 2
myselfshj
- 粉丝: 23
- 资源: 22

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页