3

ボールが壁に当たったときに跳ね返る単純なゲームをプログラミングしています。GUI には JavaFX を、描画には 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であることに注意してください。すべてが想定どおりに機能しますが、気になる点が 1 つだけあります。

青い軌跡のボール

ボールが通ってきた道の跡が残り、とても気になります。コードを 1 回実行してみました (もう一度青と黒で描画します)。痕跡は残りませんが、スレッドに配置して実行すると、このようなことが起こります。

4

1 に答える 1

1

私はJavaFXについてあまり知りません。グラフィックには別のシステムを使用していますが、最初にこれを追加すると少し役立つかもしれません:

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