图片数据的加载方案
2006-11-07 15:07
357 查看
以往在制作游戏的过程中,每一个场景、过关或者游戏最开始的初始化都要加载图片资源,但是目前的图片是按照用途来归类,比如主角的图片都放在一起,boss的图片都放在一起,背景、游戏中的UI都放在一起等等,在加载过程中我们需要取个别类的图片,也就是要包含几个图片文件的加载过程,如何统计每一个加载过程的在总体进度中的进程和总占用的内存成为一个问题。
针对这个问题我采取的一个解决办法是用一个数组作为一个BOX,将需要加载的图片资源按顺序放在这个BOX中,在初始化时,会自动统计这个BOX的容量,以这个box统计的容量作为整个加载过程的上限,加载的图片序号作为进度,例如:分别将图片数为3,4,5的图片数组放入BOX中,则统计的数组上限是3+4+5 = 12,加载进度是Index/12,同时可以统计到每一个Index占用的内存和图片大小。
下面是一个完整的例子:
图片在文件中的位置数组
short[] dataBoss0
short[] dataBoss2
short[] dataBoss3
short[] dataBoss4
图片的存放路径
String pathBoss0 = "/Resource/boss0.mid";
String pathBoss2 = "/Resource/boss2.mid";
String pathBoss3 = "/Resource/boss3.mid";
String pathBoss4 = "/Resource/boss4.mid";
short[][] dataBox; 数据BOX
String[] pathBox; 路径BOX
short index = 0; 总数
short i = 0; 当前index
int m = 0,n = 0; 在Player中的坐标
Image[][] player; 生成后的图片存放数组
初始化过程
public void CreatDataBox()...{
dataBox = new short[][]...{dataBoss0,dataBoss2,dataBoss3,dataBoss4};
pathBox = new String[]...{pathBoss0,pathBoss2,pathBoss3,pathBoss4};
index = 0;
player = new Image[dataBox.length][0];
for (int i = 0;i<dataBox.length;i++)...{
index += dataBox[i].length;
player[i] = new Image[dataBox[i].length];
}
Init = true;
}
加载过程
public void Load()...{
this.m = 0;
this.n = this.i;
for(int im = 0;im<dataBox.length;im++)...{
if(n >= dataBox[im].length)...{
if(m<dataBox.length-1)...{
m ++;
}
n -=dataBox[im].length;
}
else...{
break;
}
}
player[m]
=loadImage(readImage(getStart(dataBox[m],(short) n),dataBox[m]
,pathBox[m]),0,dataBox[m]
);
memory += (player[m]
.getWidth()*player[m]
.getHeight()*2);
if (this.i < index)...{
this.i ++;
}
else...{
Complete = true;
}
}
针对这个问题我采取的一个解决办法是用一个数组作为一个BOX,将需要加载的图片资源按顺序放在这个BOX中,在初始化时,会自动统计这个BOX的容量,以这个box统计的容量作为整个加载过程的上限,加载的图片序号作为进度,例如:分别将图片数为3,4,5的图片数组放入BOX中,则统计的数组上限是3+4+5 = 12,加载进度是Index/12,同时可以统计到每一个Index占用的内存和图片大小。
下面是一个完整的例子:
图片在文件中的位置数组
short[] dataBoss0
short[] dataBoss2
short[] dataBoss3
short[] dataBoss4
图片的存放路径
String pathBoss0 = "/Resource/boss0.mid";
String pathBoss2 = "/Resource/boss2.mid";
String pathBoss3 = "/Resource/boss3.mid";
String pathBoss4 = "/Resource/boss4.mid";
short[][] dataBox; 数据BOX
String[] pathBox; 路径BOX
short index = 0; 总数
short i = 0; 当前index
int m = 0,n = 0; 在Player中的坐标
Image[][] player; 生成后的图片存放数组
初始化过程
public void CreatDataBox()...{
dataBox = new short[][]...{dataBoss0,dataBoss2,dataBoss3,dataBoss4};
pathBox = new String[]...{pathBoss0,pathBoss2,pathBoss3,pathBoss4};
index = 0;
player = new Image[dataBox.length][0];
for (int i = 0;i<dataBox.length;i++)...{
index += dataBox[i].length;
player[i] = new Image[dataBox[i].length];
}
Init = true;
}
加载过程
public void Load()...{
this.m = 0;
this.n = this.i;
for(int im = 0;im<dataBox.length;im++)...{
if(n >= dataBox[im].length)...{
if(m<dataBox.length-1)...{
m ++;
}
n -=dataBox[im].length;
}
else...{
break;
}
}
player[m]
=loadImage(readImage(getStart(dataBox[m],(short) n),dataBox[m]
,pathBox[m]),0,dataBox[m]
);
memory += (player[m]
.getWidth()*player[m]
.getHeight()*2);
if (this.i < index)...{
this.i ++;
}
else...{
Complete = true;
}
}
相关文章推荐
- Android之批量加载图片OOM问题解决方案
- TextView加载HTML数据(网络图片以及图片点击事件的实现)
- Android 高清加载巨图方案 拒绝压缩图片
- Android控件使用—Listview加载网络数据、图片并跳转传值
- 【iOS开发】SDWebImage框架,加载图片,失败之后,居然直接跳过不再去请求网络数据了?
- ListView加载网络数据和图片
- Android 高清加载巨图方案 拒绝压缩图片
- TextView异步加载HTML格式数据中的图片(解决4.0以上主线程加载失败)
- android中ListView异步加载图片时的图片错位问题解决方案
- 从服务器上加载数据(包括图片)
- iframe加载数据生成的二维码图片iframe自适应
- RecyclerView使用 及 滑动时加载图片优化方案
- 解决html 加载同名图片或flash存在数据缓存问题
- jquery动态加载图片数据
- 用加载图片解决在ajax数据加载中页面出现短暂空白的问题
- opencv加载内存中的图片数据
- Toast 数据加载,内容加载,网络图片加载提示
- Android 学习笔记之Volley(八)实现网络图片的数据加载
- 图片延迟加载开源方案-lazysizes
- cocos2d-x 图片纹理优化 资源加载方案