我正在使用Surfaceview编写游戏,并且有一个与将数据保存到捆绑包有关的问题。
最初,我有一个arraylist,它存储了只能上下移动的精灵的Y坐标(以整数形式)。声明为:
static ArrayList<Integer> ycoordinates = new ArrayList<Integer>();
我使用以下内容将它们保存到Bundle中:
myBundle.putIntegerArrayList("myycoordinates", ycoordinates);
使用它恢复它们:
ycoordinates.addAll(savedState.getIntegerArrayList("ycoordinates"));
这一切都很完美。但是,我必须更改整个坐标系统,因此它基于Delta时间,以允许我的精灵在不同的屏幕上以均匀的速度移动。这又是完美的。
但是,由于此更改,我现在必须将这些值存储为浮点数而不是整数。
所以,我宣称:
static ArrayList<Float> ycoordinates = new ArrayList<Float>();
这就是背景,现在我的问题是,如何存储和恢复Float Arraylist的值?似乎没有“putFloatArrayList”或“getFloatArrayList”。
(我使用了Arraylist而不是数组,因为sprite的数量需要是动态的。)
任何帮助都将不胜感激。
非常感谢
答案 0 :(得分:0)
我写了几个简单的方法来在List和float []之间进行转换。您可以在float []上使用Bundle putFloatArray()
和getFloatArray
。
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args){
List<Float> in = new ArrayList<Float>();
in.add(3.0f);
in.add(1f);
in.add((float)Math.PI);
List<Float>out = toList(toArray(in));
System.out.println(out);
}
public static float[] toArray(List<Float> in){
float[] result = new float[in.size()];
for(int i=0; i<result.length; i++){
result[i] = in.get(i);
}
return result;
}
public static List<Float> toList(float[] in){
List<Float> result = new ArrayList<Float>(in.length);
for(float f : in){
result.add(f);
}
return result;
}
}