我正在编写一个简单的游戏,当它击中墙壁时球会反弹。我使用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。一切都按照它应该的方式运作,但只有一件事困扰我:
球离开了它正在走的一条路,这让我非常困扰。我尝试了一次移动的代码(再次用蓝色和黑色绘制),它没有留下任何痕迹,但当我把它放在一个线程上让它运行时,就会发生这种情况。
答案 0 :(得分:1)
我对JavaFX知之甚少,我使用不同的系统进行图形处理,但我想如果你在开头添加它,可能会有所帮助:
gc.clearRect(0D, 0D, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height);