3

我正在编写一个简单的游戏,其中球在撞到墙上时应该反弹。我将 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。一切都按预期进行,但只有一件事困扰着我:

带有蓝色轨迹的球

球留下了它一直在走的路,这让我非常困扰。我尝试了一次移动的代码(再次将其绘制为蓝色和黑色),它没有留下任何痕迹,但是当我将它放在线程上并让它运行时,就会发生这种情况。

4

1 回答 1

1

我对JavaFX不太了解,我使用不同的图形系统,但我认为如果你在开头添加这个,它可能会有所帮助:

gc.clearRect(0D, 0D, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height);
于 2016-04-13T23:51:46.040 回答