我正在编写一个简单的游戏,其中球在撞到墙上时应该反弹。我将 JavaFX 用于 GUI、Canvas 和 GraphicsContext 用于绘图。
我绘制球的代码:
public void moving(){
gc.setFill(Color.BLACK);
gc.fillOval(ball.getCenterX()-15, ball.getCenterY()-15, 30,30);
if (ball.getCenterX()<285 && ball.getCenterX()>15) {
double xtemp = ball.getCenterX()+vektorx;
ball.setCenterX(xtemp);
} else {
vektorx = -vektorx;
double xtemp = ball.getCenterX()+vektorx;
ball.setCenterX(xtemp);
}
if (ball.getCenterY()<485 && ball.getCenterY()>15) {
double ytemp = ball.getCenterY()+vektory;
ball.setCenterY(ytemp);
} else {
vektory = -vektory;
double ytemp = ball.getCenterY()+vektory;
ball.setCenterY(ytemp);
}
gc.setFill(Color.AQUA);
gc.fillOval(ball.getCenterX()-15, ball.getCenterY()-15, 30,30);
}
请注意,这gc
是我使用的 GraphicsContext。一切都按预期进行,但只有一件事困扰着我:
球留下了它一直在走的路,这让我非常困扰。我尝试了一次移动的代码(再次将其绘制为蓝色和黑色),它没有留下任何痕迹,但是当我将它放在线程上并让它运行时,就会发生这种情况。