我正在做一个小游戏,我想为失败设定条件。如果失败是真的,我希望清除屏幕上的所有图形,以便我可以为屏幕上的一些输出文本让路。
我假设有一种传统的方法来做到这一点(我宁愿知道,也不必输入不必要的代码)。提前感谢!
这是我到目前为止的代码:
public void paintComponent(Graphics g){
if (!defeat){
super.paintComponent(g);
square.display(g);
wall.display(g);
for (Circle circle: circleArray){
circle.display(g);
}
}else if(defeat){
g.drawString("You have been defeated", 300, 300);
}
你应该总是打电话给super.paintComponent(g);
(除非你真的知道你在做什么)。
将该调用放在您的 if 语句之外。这个电话就是"清除屏幕"的东西。喜欢这个:
public void paintComponent(Graphics g){
super.paintComponent(g);
if (!defeat){
square.display(g);
wall.display(g);
for (Circle circle: circleArray){
circle.display(g);
}
}else if(defeat){
g.drawString("You have been defeated", 300, 300);
}
>"I want all the graphics on the screen to be cleared so I can make way for some output text on the screen"
,但你也希望每一帧都清除屏幕,所以你基本上需要始终清除它,这意味着你应该把super.paintComponent(g);
放在任何 if 语句之外。
我推荐这段代码:(我已经清理了它并将框架移开了)
public void paintComponent(Graphics g){
super.paintComponent(g);
if (defeat){
g.drawString("You have been defeated", 300, 300);
} else {
square.display(g);
wall.display(g);
for (Circle circle: circleArray)
circle.display(g);
}
}
我还建议将变量defeat
更改为defeated
,并为 Graphics 对象指定一个更好的名称,就像我使用 canvas
一样。