29. 用libgdx 写一个管理临时数组类
需求: 项目需要用到大量的数据 IntArray,IntIntMap 来辅助计算坐标,初始解决方法是建立几个temp数组,然后方法如果使用temp来计算,则命名的时候添加对应后标,后来觉得很容易搞混,并且有些资源浪费.所以写了一个管理类来管理,利用数组的size是否为0来判断.
package com.zhfy.game.framework;import com.badlogic.gdx.utils.Array;import com.badlogic.gdx.utils.IntArray;import com.badlogic.gdx.utils.IntIntMap;import com.badlogic.gdx.utils.ObjectMap;public class TempUtil { //临时工具类,使用Intarray等所有的都从这里获取 private Array<IntArray> tempIntArrays; private Array<IntIntMap> tempIntIntMaps; // int c=0; public TempUtil(){ tempIntArrays=new Array<>(); tempIntIntMaps=new Array<>(); } public void dispose(){ tempIntArrays.clear(); tempIntIntMaps.clear(); } //state -1不存在 0 size==0 1 size>0 public int getTempIntArrayState(IntArray i){ if(tempIntArrays.contains(i,false)){ if(i.size==0){ return 0; }else{ return 1; } } return -1; } public IntArray getTempIntArray(){ for(int c=0,cMax=tempIntArrays.size;c<cMax;c ){ IntArray i=tempIntArrays.get(c); if(i.size==0){ return i; } } if(tempIntArrays.size>10){ int s=0; } IntArray n=new IntArray(); tempIntArrays.add(n); return n; } public void disposeTempIntArray(IntArray i){ i.clear(); } public void disposeAllTempIntArray(){ for(int i=0,iMax=tempIntArrays.size;i<iMax;i ){ tempIntArrays.get(i).clear(); } } public IntIntMap getTempIntIntMap(){ for(int c=0,cMax=tempIntIntMaps.size;c<cMax;c ){ IntIntMap i=tempIntIntMaps.get(c); if(i.size==0){ return i; } } IntIntMap n=new IntIntMap(); tempIntIntMaps.add(n); return n; } public void disposeTempIntIntMap(IntIntMap i){ i.clear(); } public void disposeAllTempIntIntMap(){ for(int i=0,iMax=tempIntIntMaps.size;i<iMax;i ){ tempIntIntMaps.get(i).clear(); } }}
TempUtil
使用方法
TempUtil tempUtil=new TempUtil ();//获取需要用到数组 IntIntMap tempIntIntMap=tempUtil.getTempIntIntMap();//TODO 自己的方法..............//注销数组 game.tempUtil.disposeTempIntIntMap(tempIntIntMap);//获取需要用到的数组IntArray tempIntArray=tempUtil.getTempIntArray();//TODO 自己的方法..............//注销数组 game.tempUtil.disposeTempIntArray(tempIntArray3);
赞 (0)