其他分享
首页 > 其他分享> > 29. 用libgdx 写一个管理临时数组类

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);
 

 

标签:数组,int,libgdx,29,IntArray,tempIntArrays,com,public,size
来源: https://www.cnblogs.com/tysk/p/14300546.html