Увеличение хитбокса Circle в JavaFX - PullRequest
0 голосов
/ 15 мая 2018

Я создаю круги размером 5 с чем-то вроде Circle c = new Circle(x, y, 5);. Затем я делаю c.setOnMousePressed(mousePressedEventHandler);, но у меня здесь проблема: мой круг слишком мал, и его легко пропустить. Я хотел бы сохранить этот размер, так есть ли способ увеличить хитбоксы круга, не делая чего-то вроде создания невидимого круга большего размера, а затем установить на нем список участников?

1 Ответ

0 голосов
/ 15 мая 2018

Увеличьте область попадания, добавив прозрачный штрих к окружностям.

Примечание: Чтобы использовать хит , поля необходимо установить свойство pickOnBoundsдо true.

private static Circle createCircle(double x, double y, double radius, double hitRadius) {
    Circle circle = new Circle(x, y, radius, Color.BLACK);
    circle.setStrokeType(StrokeType.OUTSIDE);
    circle.setStroke(Color.TRANSPARENT);
    circle.setStrokeWidth((hitRadius < radius) ? 0 : (hitRadius - radius));
    return circle;
}

@Override
public void start(Stage primaryStage) {
    Pane root = new Pane();
    Circle circle1 = createCircle(100, 100, 5, 20);
    Circle circle2 = createCircle(150, 150, 5, 20);

    circle1.setOnMouseClicked(evt -> System.out.println("clicked 1"));
    circle2.setOnMouseClicked(evt -> System.out.println("clicked 2"));

    root.getChildren().addAll(
            circle1,
            circle2
    );

    Scene scene = new Scene(root, 400, 400);

    primaryStage.setScene(scene);
    primaryStage.setResizable(false);
    primaryStage.show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...