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)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
手机游戏开发全书--J2ME完整实例精解 源代码 (150个子文件)
role.bin 8KB
role.bin 8KB
title.bin 514B
title.bin 514B
Data.class 20KB
Data.class 19KB
Map.class 14KB
Map.class 12KB
Role.class 7KB
Role.class 6KB
GameCanvas.class 5KB
Enemy.class 5KB
GameCanvas.class 5KB
Enemy.class 4KB
Map.class 4KB
Role.class 4KB
Role.class 4KB
Engine.class 4KB
Map.class 4KB
Trap.class 4KB
ActionFrame.class 3KB
Trap.class 3KB
Engine.class 3KB
ActionFrame.class 3KB
Menu.class 3KB
Menu.class 2KB
UnitFrame.class 2KB
Tools.class 2KB
UnitFrame.class 2KB
RoleAction.class 2KB
Tools.class 2KB
GameDisplayable.class 2KB
RoleAction.class 2KB
GameDisplayable.class 2KB
TileUnit.class 2KB
TileUnit.class 1KB
FloorUnit.class 1KB
FloorUnit.class 1KB
GameMIDlet.class 988B
GameMIDlet.class 980B
GameMIDlet.class 931B
GameMIDlet.class 931B
Data.class 875B
Data.class 867B
.classpath 242B
.classpath 242B
Thumbs.db 71KB
Thumbs.db 71KB
Thumbs.db 64KB
Thumbs.db 64KB
.eclipseme 239B
.eclipseme 238B
HotEdit.exe 5.05MB
Data.html 547B
8111.jad 212B
908.jad 210B
8111.jad 187B
908.jad 185B
mybook.jad 159B
908.jar 131KB
8111.jar 114KB
mybook.jar 64KB
Data.java 25KB
Map.java 22KB
Role.java 22KB
Enemy.java 13KB
GameCanvas.java 11KB
Map.java 11KB
Trap.java 8KB
Tools.java 6KB
Engine.java 6KB
Role.java 5KB
ActionFrame.java 5KB
Menu.java 3KB
UnitFrame.java 3KB
RoleAction.java 2KB
GameDisplayable.java 2KB
TileUnit.java 2KB
GameMIDlet.java 1KB
Data.java 1KB
FloorUnit.java 1KB
GameMIDlet.java 566B
Role.jbx 901B
Role.jbx 901B
Map.jbx 823B
Map.jbx 823B
ActionFrame.jbx 463B
ActionFrame.jbx 463B
UnitFrame.jbx 410B
UnitFrame.jbx 410B
RoleAction.jbx 287B
RoleAction.jbx 287B
mybook.jpx 4KB
mybook.jpx.local 3KB
2.map 3KB
2.map 3KB
1.map 3KB
1.map 3KB
background.png 19KB
background.png 19KB
共 150 条
- 1
- 2
myselfshj
- 粉丝: 23
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页