图片数据的加载方案

以往在制作游戏的过程中,每一个场景、过关或者游戏最开始的初始化都要加载图片资源,但是目前的图片是按照用途来归类,比如主角的图片都放在一起,boss的图片都放在一起,背景、游戏中的UI都放在一起等等,在加载过程中我们需要取个别类的图片,也就是要包含几个图片文件的加载过程,如何统计每一个加载过程的在总体进度中的进程和总占用的内存成为一个问题。

针对这个问题我采取的一个解决办法是用一个数组作为一个BOX,将需要加载的图片资源按顺序放在这个BOX中,在初始化时,会自动统计这个BOX的容量,以这个box统计的容量作为整个加载过程的上限,加载的图片序号作为进度,例如:分别将图片数为345的图片数组放入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][n]
=loadImage(readImage(getStart(dataBox[m],(short) n),dataBox[m][n],pathBox[m]),0,dataBox[m][n]);
    memory 
+= (player[m][n].getWidth()*player[m][n].getHeight()*2);
    
if (this.i < index){
      
this.i ++;
    }

    
else{
      Complete 
= true;
    }

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值