【发布时间】:2017-12-28 05:23:58
【问题描述】:
当球撞到墙的任何一侧时,我正在尝试更改球的颜色。 我可以让它改变颜色,但之后它会变回原来的颜色。
这是我正在处理的代码部分。我需要帮助。有没有办法保持颜色变化?
如果你一直向下看代码,你可以看到注释部分//初始球颜色。我确信部分代码是它恢复原始颜色并且不改变颜色的原因。有没有办法保持它撞到墙上时也会改变的颜色?
public void paint (Graphics g) {
g.drawRect(rectLeftX, rectTopY,
rectRightX - rectLeftX, rectBottomY - rectTopY);
r=new Random();
for (int n = 1; n < 500 ; n++) {
Color backgroundColour = getBackground();
g.setColor(backgroundColour);
g.fillOval(x, y, diameter, diameter);
if (x + xChange <= rectLeftX)
{
xChange = -xChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if(x+xChange + diameter >= rectRightX)
{
xChange = -xChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if (y+yChange <= rectTopY)
{
yChange = -yChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if(y + yChange + diameter >= rectBottomY)
{
yChange = -yChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
x = x + xChange;
y = y + yChange;
// initial ball color
g.setColor(get());
g.fillOval (x, y, diameter, diameter);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
g.drawString("sleep exception", 20, 20);
}
}
}
【问题讨论】:
-
你的 get() 方法是做什么的?
-
同 g.setColor(Color.BLACK);我把它放到一个方法中,但它不一定是。它可以写成 g.setColor(Color.BLACK);而是在 for 循环中。
标签: java user-interface awt