【发布时间】:2017-12-08 01:11:16
【问题描述】:
我试图通过开关为 for 循环的第一次迭代设置特定图像。对于case 'f',我想在第一次迭代时添加不同的图像。
我该怎么做?甚至可以在交换机内跟踪吗?
for (char c : symbols) {
switch (c) {
case 'X':
g2.setColor(Color.BLACK);
g2.drawImage(wallImg, x, y, width, height, null);
break;
case 's':
g2.setColor(Color.GREEN);
g2.drawImage(snakeImg, x, y, width, height, null);
break;
case 'f':
g2.setColor(Color.ORANGE);
g2.drawImage(burgerImg, x, y, width, height, null);
break;
case '.':
g2.setColor(Color.WHITE);
g2.fillRect(x, y, width, height);
break;
case '\n':
y += height;
}
【问题讨论】:
-
在 switch 之前添加一个布尔标志,然后执行 if(boolean flag) 检查它是否为真/假,如果为真则进入 else,以便加载不同的图像。
-
迭代计数根本不应该是绘画过程的一部分,因为您无法控制绘画的方式、是否或何时发生。对象状态的变化应该在您的游戏循环中(可能是 Swing Timer)。绘制方法应该只反映模型的状态,而不是改变它。
-
这是否解决了您的问题@user5402 您尚未将其标记为解决方案 - 您从中收到了什么问题?
-
谢谢@Artemis,是的,它解决了我的问题
标签: java swing switch-statement