我在这里使用此代码自动使用obj文件的目录路径填充字符串数组列表,以便以后在动画中使用,但这有一个小问题:
private List<String> bunny_WalkCycle = new ArrayList<String>();
private int bunny_getWalkFrame = 0;
private void prepare_Bunny_WalkCycle() {
String bunny_walkFrame = "/bunnyAnimation/bunnyFrame0.obj";
while(bunny_WalkCycle.size() != 30) { // 30 obj files to loop through
if(bunny_getWalkFrame != 0) {
bunny_walkFrame =
"/bunnyAnimation/bunnyWalkAnim/bunnyWalkFrame_"+bunny_getWalkFrame+".obj";
}
bunny_WalkCycle.add(bunny_getWalkFrame);
bunny_getWalkFrame++;
}
}
现在的问题是,动画的blender中的命名约定在实际数字之前是零,所以像这样:
bunnyWalkFrame_000001.obj
bunnyWalkFrame_000002.obj
bunnyWalkFrame_000003.obj
...
bunnyWalkFrame_000030.obj
使用我的prepare_Bunny_WalkCycle方法,我无法解释为零,所以我会更改名称并删除零..这可能没有那么多帧但是一旦我达到100帧就会变得痛苦..所以那里& #39;我的问题:
在代码中考虑零的智能方法是什么,而不是手动重命名每个文件并将其删除?
答案 0 :(得分:3)
您可以使用String.format()
用零填充数字:
String.format("%05d", yournumber);
答案 1 :(得分:3)
我认为您可以使用"String.format"解决问题:
String blenderNumber = String.format("%06d", bunny_getWalkFrame);
说明:
所以这将是你的新bunny_walkFrame:
bunny_walkFrame = "/bunnyAnimation/bunnyWalkAnim/bunnyWalkFrame_" + blenderNumber + ".obj";
答案 2 :(得分:1)
以下是两个选项。首先,您可以使用字符串格式化程序创建带有前导零的文件名:
bunny_WalkCycle.add("/bunnyAnimation/bunnyFrame0.obj");
for (int frame = 1; frame <= 30; frame++) {
bunny_WalkCycle.add(
String.format("/bunnyAnimation/bunnyWalkAnim/bunnyWalkFrame_%06s.obj", frame));
}
第二个选项是,如果您已经拥有目录中的所有必需文件,则可以一次性获取所有文件:
bunny_WalkCycle.add("/bunnyAnimation/bunnyFrame0.obj");
bunny_WalkCycle.addAll(Arrays.asList(new File("/bunnyAnimation/bunnyWalkAnim").list()));
答案 3 :(得分:1)
有两种方法可以做到这一点: 附加正确数量的前导零,或使用String格式化程序。
OR
其中
private String getLeadingZeroes(int walk) {
String zeroes = "";
int countDigits = 0;
while (walk > 0) {
countDigits++;
walk /= 10;
}
for (int i = 1; i <= (nZeroes - countDigits); i++) {
zeroes += "0";
}
return zeroes;
}
答案 4 :(得分:0)
这里你去:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html
只需指定所需的位数即可。将其设置为一个。如果必须,它将推翻(因此它不会切断数字)