Создание простого мяча отскакивая от стен с помощью JavaFX - PullRequest
0 голосов
/ 07 октября 2018

Мне трудно понять, почему этот код работает, когда центр круга установлен на (0, 0), а не с другими координатами:

public class Test extends Application {

@Override
public void start(Stage stage) {
     Pane canvas=new Pane();
     Scene scene = new Scene(canvas, 800, 600);

     Circle ball = new Circle();
     ball.setRadius(20);
     ball.setFill(Color.RED);


     canvas.getChildren().add(ball);

      stage.setTitle("Bouncing ball");
      stage.setScene(scene);
      stage.show();



      Timeline timeline = new Timeline(new KeyFrame(Duration.millis(10),
              new EventHandler<ActionEvent>() {

        double dx =3; 
        double dy = 4; 

          @Override
          public void handle(ActionEvent t) {
            //move the ball
            ball.setLayoutX(ball.getLayoutX() + dx);
            System.out.println(ball.getLayoutX());
            ball.setLayoutY( ball.getLayoutY() + dy);

        Bounds bounds = canvas.getBoundsInLocal();



     if(( ball.getLayoutY() >= (bounds.getMaxY() -  ball.getRadius()))){
         System.out.println("made it in");
                dy = -dy;

               }

          }
      }));
      timeline.setCycleCount(Timeline.INDEFINITE);
      timeline.play();


}

public static void main(String[] args) {
    launch(args);
}

}

Любое понимание того, почему мяч отскакивает от нижней стенки, как и ожидалось, когда мяч начинается с (0, 0), и просто улетает, когда это не так, будет очень цениться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...