📄 data.java
字号:
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) (maxX - minX);
/*高度为y方向的最大偏移与最小偏移之差*/
Data.npcItemDataSize[i][j][k * 4 + 3] = (short) (maxY - minY);
}
}
}
}
//切片集合
public static short allItemData[][]={
{2,0,0,16,16}, //索引:[0]
{2,16,0,16,16}, //索引:[1]
{2,32,0,16,16,4}, //索引:[2] 水平镜象
{2,32,0,16,16}, //索引:[3]
{2,0,16,16,16}, //索引:[4]
{2,16,16,16,16}, //索引:[5]
{2,32,16,16,16,4}, //索引:[6] 水平镜象
{2,32,16,16,16}, //索引:[7]
{2,0,32,16,16,4}, //索引:[8] 水平镜象
{2,0,32,16,16}, //索引:[9]
{2,16,32,16,16,4}, //索引:[10] 水平镜象
{2,16,32,16,16}, //索引:[11]
{2,32,32,16,16,4}, //索引:[12] 水平镜象
{2,32,32,16,16}, //索引:[13]
{2,0,48,16,16,4}, //索引:[14] 水平镜象
{2,0,48,16,16}, //索引:[15]
{2,16,48,16,16}, //索引:[16]
{2,32,48,16,16,4}, //索引:[17] 水平镜象
{2,32,48,16,16}, //索引:[18]
{2,32,64,16,16}, //索引:[19]
{2,0,64,16,16}, //索引:[20]
{2,16,64,16,16}, //索引:[21]
{2,64,0,16,16}, //索引:[22]
{2,32,80,16,16}, //索引:[23]
{2,48,0,16,16}, //索引:[24]
{2,48,0,16,16,4}, //索引:[25] 水平镜象
{2,48,16,16,16}, //索引:[26]
{2,64,16,16,16}, //索引:[27]
{3,0,0,61,41}, //索引:[28]
{3,0,41,44,37}, //索引:[29]
{3,47,41,14,10}, //索引:[30]
{3,61,0,54,37}, //索引:[31]
{1,21,56,17,11}, //索引:[32]
{1,26,38,18,18}, //索引:[33]
{1,0,65,15,20}, //索引:[34]
{1,0,46,19,19}, //索引:[35]
{1,38,57,19,10}, //索引:[36]
{0,56,0,7,6,4}, //索引:[37] 水平镜象
{0,63,0,6,8,4}, //索引:[38] 水平镜象
{1,28,0,26,18}, //索引:[39]
{1,27,18,25,14}, //索引:[40]
{1,0,14,27,32}, //索引:[41]
{1,0,0,25,14}, //索引:[42]
{0,0,0,56,8}, //索引:[43]
{0,0,8,66,7}, //索引:[44]
{1,81,0,34,39}, //索引:[45]
{0,74,16,11,6}, //索引:[46]
{0,66,16,8,16}, //索引:[47]
{0,66,16,8,16,4}, //索引:[48] 水平镜象
{1,84,39,35,36}, //索引:[49]
{1,115,0,31,41}, //索引:[50]
{1,120,41,25,29}, //索引:[51]
{0,69,0,16,16}, //索引:[52]
{0,69,0,16,16,4}, //索引:[53] 水平镜象
{0,85,0,16,21}, //索引:[54]
{0,85,0,16,21,4}, //索引:[55] 水平镜象
{0,101,0,20,21}, //索引:[56]
{0,101,0,20,21,4}, //索引:[57] 水平镜象
{0,74,22,18,10}, //索引:[58]
{0,74,22,18,10,4}, //索引:[59] 水平镜象
{1,27,32,21,5}, //索引:[60]
{1,0,85,24,33}, //索引:[61]
{1,27,0,27,32}, //索引:[62]
{1,43,67,12,10}, //索引:[63]
{0,92,21,30,6}, //索引:[64]
{1,56,0,25,43}, //索引:[65]
{1,44,46,7,7}, //索引:[66]
{0,0,15,34,36}, //索引:[67]
{1,57,61,26,15}, //索引:[68]
{1,15,67,28,18}, //索引:[69]
{0,34,15,32,35}, //索引:[70]
{1,57,43,27,33}, //索引:[71]
{0,0,51,63,9}, //索引:[72]
{0,66,32,62,15}, //索引:[73]
{0,51,60,18,19}, //索引:[74]
{1,0,85,26,33}, //索引:[75]
{0,69,48,39,19}, //索引:[76]
{0,1,60,50,18,1}, //索引:[77] R90度
{1,123,70,23,54}, //索引:[78]
{0,99,67,29,45,4}, //索引:[79] 水平镜象
{0,70,67,28,51,4}, //索引:[80] 水平镜象
{1,24,85,37,30}, //索引:[81]
{6,0,36,15,16}, //索引:[82]
{6,0,0,24,24}, //索引:[83]
{1,61,76,29,36}, //索引:[84]
{6,0,25,19,11}, //索引:[85]
{6,0,25,19,11,2}, //索引:[86] R180度
{6,24,0,25,30}, //索引:[87]
{1,91,75,29,37}, //索引:[88]
{6,20,30,27,34}, //索引:[89]
{1,0,118,41,20}, //索引:[90]
{1,41,115,41,20}, //索引:[91]
{4,0,0,28,22}, //索引:[92]
{4,87,0,15,20}, //索引:[93]
{4,31,22,18,19}, //索引:[94]
{4,28,0,29,21}, //索引:[95]
{4,57,0,30,21}, //索引:[96]
{4,0,22,31,33}, //索引:[97]
{4,49,21,42,33}, //索引:[98]
{4,0,55,45,34}, //索引:[99]
{4,46,54,49,43}, //索引:[100]
{5,0,0,7,9}, //索引:[101]
{5,15,0,8,9}, //索引:[102]
{5,7,0,8,9}, //索引:[103]
{9,0,0,28,28}, //索引:[104]
{9,28,0,28,28}, //索引:[105]
{9,56,0,29,27}, //索引:[106]
{9,62,27,28,28}, //索引:[107]
{9,27,55,9,9}, //索引:[108]
{9,49,55,16,15}, //索引:[109]
{9,27,67,10,10}, //索引:[110]
{9,38,67,10,10}, //索引:[111]
{9,65,55,13,16}, //索引:[112]
{9,77,55,13,16}, //索引:[113]
{9,0,28,31,29}, //索引:[114]
{9,49,71,34,1}, //索引:[115]
{9,31,28,31,27}, //索引:[116]
{9,28,78,60,1}, //索引:[117]
{9,49,74,25,1}, //索引:[118]
{9,0,57,27,27}, //索引:[119]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -