我为我的一些程序设置了动画,它是一个移动的人,它的工作原理和一切。我有很多重复的代码,所以我想尝试让它更有效并循环重复。我的问题是,即使使用适当数量的括号,它也会给我几乎所有下面的错误
public void DrawAstronaut(Graphics2D g2d) {
if (nViewDX == -1) {
DrawAstronautLeft(g2d);
} else if (nViewDX == 1) {
DrawAstronautRight(g2d);
} else {
DrawAstronautStand(g2d);
}
}
public void DrawAstronautLeft(Graphics2D g2d) {
switch (nAstroAnimPos) {
for(int i = 1; i <= 6; i++){
case i:
g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);
break;
default:
g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
break;
}
}
}
public void DrawAstronautRight(Graphics2D g2d) {
switch (nAstroAnimPos) {
for(int i = 1; i <= 6; i++){
case i:
g2d.drawImage(arimgAstroWalkRight[i], nAstronautX + 1, nAstronautY + 1, this);
break;
default:
g2d.drawImage(imgAstroStandRight, nAstronautX + 1, nAstronautY + 1, this);
break;
}
}
}
public void DrawAstronautStand(Graphics2D g2d) {
switch (nAstroAnimPos) {
default:
g2d.drawImage(imgAstroStandLeft, nAstronautX, nAstronautY, this);
break;
}
}
当我向DrawAstronautLeft添加for循环时,下面的所有内容都有错误,它甚至不喜欢公共的无效DrawAstronautRight,即使它们应该没有任何问题。我知道我有合适数量的括号,但有人可以帮助把东西放在正确的地方吗?
错误包括: 无法找到符号 “案例,默认或”}“预期” “class,interface或enum expected”
答案 0 :(得分:1)
您不需要切换。你可以用 -
修改你的循环for(int i = 0; i <= nAstroAnimPos; i++){
if(i == 0) // Start with stand position
g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
else // Run the sequence from 1 to 6
g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);
}
如果你想以立场位置结束 -
for(int i = 0; i <= nAstroAnimPos + 1; i++){
if(i == 0 || i == nAstroAnimPos + 1) // Start and end with stand position
g2d.drawImage(imgAstroStandLeft, nAstronautX + 1, nAstronautY + 1, this);
else // Run the sequence from 1 to 6
g2d.drawImage(arimgAstroWalkLeft[i], nAstronautX + 1, nAstronautY + 1, this);
}