Я новичок в Javafx, и я создаю простую программу. То, что я пытаюсь достичь, это заставить мяч отскакивать от стен, но я еще не понял, как это сделать. Кроме того, не стесняйтесь оставлять другие предложения о моем коде.Как заставить мяч отскакивать от стен в JavaFX?
Вот исходный код:
public class GamePractice extends Application {
public static Circle circle;
public static Pane canvas;
private long counter = 0;
@Override
public void start(Stage primaryStage) {
canvas = new Pane();
Scene scene = new Scene(canvas, 800, 600);
primaryStage.setTitle("Game");
primaryStage.setScene(scene);
primaryStage.show();
circle = new Circle(15,Color.BLUE);
circle.relocate(100, 100);
canvas.getChildren().addAll(circle);
Timeline loop = new Timeline(new KeyFrame(Duration.millis(10), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
if (counter++ % 10 == 0)
{
circle.setLayoutX(circle.getLayoutX() + 10);
circle.setLayoutY(circle.getLayoutY() + 10);
//This is what I currently have, am I headed the right direction?
//Check X and Y for collision with the ball
if ((circle.getTranslateX() == canvas.getWidth() - 10) || (circle.getTranslateY() == canvas.getHeight() - 10)) {
//How do I make the ball bounce?
}
}
}
}));
loop.setCycleCount(Timeline.INDEFINITE);
loop.play();
}
Я ценю помощь.
Вместо добавления 10, вычесть 10? Конечно, вам понадобится логическая переменная, чтобы определить, должен ли шар двигаться влево или вправо (изменился бы один раз, когда он попадет на одну из стен). Например, если он попадает в левую стену, установите «movingRight = true» и когда он попадает в правую стену, установите 'movingRight = false'. –
Спасибо большое Джош! – Gregg1989
Я собираюсь написать действительно простой пример этого, но не в JavaFX, так что вы можете увидеть, как вы можете это сделать. И тогда вы могли бы взять некоторые идеи от него и использовать его в своей. –