我正在尝试更改矩形的y位置,但是,每当我尝试时,它会垂直扩展/ 变得更大。
public class PlayerPaddle implements Paddle {
double yVelocity;
final double GRAVITY = 0.94;
//move up/down faster (if not accelerating = slow down)
boolean upAccel, downAccel;
//determines if player 1 or player 2 (on left or on right)
int player;
//position of actual paddle
int x;
double y;
Rectangle panel;
public PlayerPaddle(int player) {
upAccel = false;
downAccel = false;
y = 210; //not moving initially
yVelocity = 0;
if (player == 1) {
//left side
x = 20;
} else {
//right side
x = 660;
}
}
@Override
public void draw(Graphics g) {
//draw paddle
g.setColor(Color.WHITE);
g.fillRect(x, (int) y, 20, 80);
}
@Override
public void move() {
if (upAccel) {
yVelocity -= 2;
} else if (downAccel) {
yVelocity += 2;
} else if ((!upAccel) && (!downAccel)) {
yVelocity *= GRAVITY;
}
y += yVelocity; //changes y position of paddle
}
public void setUpAccel(boolean input) {
upAccel = input;
}
public void setDownAccel(boolean input) {
downAccel = input;
}
@Override
public int getY() {
return (int) y;
}
}
我想知道如何使矩形垂直上下移动。一个类似的问题只有一个答案说,先前绘制的矩形没有被清除,因此正在扩大。但即使我说g.clearRect(...)它仍然会扩展并且不会移动。
我是Swing和Awt的新手,但我真的很乐意学习。 感谢您的帮助。
答案 0 :(得分:1)
一个类似的问题只有一个答案说,先前绘制的矩形没有被清除,因此正在扩大
这仍然是这里的问题。
在某处,不在此处提供的代码中,您需要调用此类的draw(...)
方法。
因此,在该代码中,您需要确保在绘制焊盘之前清除组件的背景。由于您应该覆盖面板的paintComponent(...)
方法来进行自定义绘制,因此您的代码应该类似于:
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
// draw the paddle
}
阅读Custom Painting上Swing教程中的部分,了解更多信息和工作示例。
我是Swing和Awt的新手,但我真的很乐意学习。
然后为所有Swing基础知识保留教程的链接。