使用JavaFX使用Canvas绘制移动球

时间:2016-04-13 21:08:33

标签: java javafx java-canvas

我正在编写一个简单的游戏,当它击中墙壁时球会反弹。我使用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。一切都按照它应该的方式运作,但只有一件事困扰我:

ball with blue trail

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

1 个答案:

答案 0 :(得分:1)

我对JavaFX知之甚少,我使用不同的系统进行图形处理,但我想如果你在开头添加它,可能会有所帮助:

gc.clearRect(0D, 0D, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height);