Я создаю игру Tic Tac Toe, в которой я хочу показать небольшую анимацию после окончания игры, чтобы показать, как игрок выиграл, примерно так:

Test animation

Так что должна быть анимация, которая показывает, как игрок выиграл. У меня проблемы с тем, как сделать эту работу. Я пытался использовать ImageView / Line, но я не знаю, как сделать так, чтобы он идеально совмещался от края кнопки в строке до конца строки, и есть также особый случай, если есть выигрыш по диагонали. Если я как-нибудь получу строку, я уверен, что добавить анимацию к ней не составит большого труда. Хотя я запутался, с чего бы вообще начать с этого!

Любая помощь будет принята с благодарностью!

Примечание . Я знаю, как выровнять линию где-нибудь на сцене, и у меня возникают проблемы с выравниванием ее от начала до конца краев трех или более отдельных узлов.

0
user11631934 17 Ноя 2019 в 16:24
Ответ на это во многом зависит от вашего кода. Мы не знаем, используете ли вы холст для рисования сетки, X и O самостоятельно или с помощью макета.
 – 
VGR
17 Ноя 2019 в 19:46
Ну, есть кнопки, как я сказал в вопросе, на них просто написан текст (X и O). Что касается того, как я добавляю его в сцену, есть панель сетки, в которой есть 3 кнопки в каждой строке / столбце. (3 х 3)
 – 
user11631934
17 Ноя 2019 в 20:01

1 ответ

Я понял; Итак, в основном то, что вы сделаете, получите layoutX / Y этого конкретного узла и установите этот layoutX / Y как startX / Y строки, а концом строки будет layoutX / Y узла в конце строки / столбца. Я приложил код, если вам нужна дополнительная помощь:

    Button button1 = new ButtonBuilder("1").setSize(50, 50).build();
    Button button2 = new ButtonBuilder("2").setSize(50, 50).build();
    Button button3 = new ButtonBuilder("3").setSize(50, 50).build();

    HBox hBox = new HBox(20);
    hBox.setAlignment(Pos.CENTER);
    hBox.getChildren().addAll(button1, button2, button3);

    Line line = new Line();
    line.setStroke(Color.RED);
    line.setStrokeWidth(20);

    root.getChildren().addAll(hBox, line);

    primaryStage.setScene(scene);
    primaryStage.show();

    System.out.println(hBox.getChildren().get(0).getLayoutX() + "\n" +
            hBox.getChildren().get(0).getLayoutY() + "\n" +
            hBox.getChildren().get(2).getLayoutX() + "\n" +
            hBox.getChildren().get(2).getLayoutY());

    System.out.println("Setting line co-ords: ");
    line.setStartX(hBox.getChildren().get(0).getLayoutX());
    line.setStartY(hBox.getChildren().get(0).getLayoutY());
    line.setEndX(hBox.getChildren().get(2).getLayoutX());
    line.setEndY(hBox.getChildren().get(2).getLayoutY());

Имейте в виду, что вы можете получить комбинации узлов только после , когда вы покажете свою сцену. А затем вы анимируете узлы, как обычно. ТАДА!

0
user11631934user11631934 19 Ноя 2019 в 13:48