【发布时间】:2014-08-09 14:08:36
【问题描述】:
假设我们有以下代码在动画中的精灵之间切换。有八个方向(北、东北、东等)。我们在它们之间切换,现在我们根据动画周期选择一个精灵。代码如下:
switch (direction){
case 0: // south
switch(sprite){
case 0: return moveSouth0;
case 1: return moveSouth1;
case 2: return moveSouth2;
case 3: return moveSouth3;
}
case 1: // south-east
switch(sprite){
case 0: return moveSouthEast0;
case 1: return moveSouthEast1;
case 2: return moveSouthEast2;
case 3: return moveSouthEast3;
}
case 2: // east
switch(sprite){
case 0: return moveEast0;
case 1: return moveEast1;
case 2: return moveEast2;
case 3: return moveEast3;
}
case 3: // northeast
// etcetera
}
这行得通。变量“moveSouth0、moveSouth1”等是BufferedImage 变量。
但是,它很长并且使用的是相同的代码。我的理想方案是执行以下操作:
String s;
switch (direction){
case 0: // south
s = "South";
break;
case 1: // south-east
s = "SouthEast";
break;
// etcetera
}
return "move" + s + sprite; // <- now returns string, should return BufferedImage
如你所见,这里我不必在每个方向情况下多做 8 个 switch 子句。
显然这不起作用,因为我必须返回 BufferedImage 而我现在返回的是 String。
问:所以我正在寻找一种将String 更改为变量名称的方法。
这样的事情是否可能(在 Java 中)?
【问题讨论】:
-
你的 BufferedImage 的成员变量是类的还是本地的?
-
@MrPixelDream 他们是成员变量
-
使用可枚举类型设置所有方向并在返回时对其调用 .name() 或 .toString() 方法怎么样? docs.oracle.com/javase/7/docs/api/java/lang/Enum.html
-
@Chronicle 我为你写了一个答案。使用成员变量,这是可能的。
标签: java string switch-statement