Я пытаюсь создать проект, в котором пользователь нажимает на экран, а затем прямоугольник переместится в положение, в котором произошло щелчок. Мое намерение состояло в том, чтобы заставить центр прямоугольника перемещать точное местоположение щелчка, но мой код только перемещает прямоугольник в общую область, где произошел щелчок. Мой вопрос в том, как получить центр прямоугольника для перемещения точного местоположения, где происходит щелчок мыши?Перемещение прямоугольника в положение, в котором происходит щелчок мыши
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);
Rectangle rec = new Rectangle(50,50,50,50);
rec.setLayoutX(200);
rec.setLayoutY(200);
TranslateTransition transition = new TranslateTransition(Duration.seconds(0.50), rec);
transition.setOnFinished(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent t) {
rec.setLayoutX(rec.getTranslateX() + rec.getLayoutX());
rec.setLayoutY(rec.getTranslateY() + rec.getLayoutY());
rec.setTranslateX(0);
rec.setTranslateY(0);
}
});
scene.setOnMousePressed(e->{
transition.setToX(e.getSceneX() - rec.getLayoutX());
transition.setToY(e.getSceneY() - rec.getLayoutY());
transition.playFromStart();
});
root.getChildren().add(rec);
primaryStage.setScene(scene);
primaryStage.show();
}
Это прекрасно работает, спасибо! Я пытаюсь узнать о переходах и подобных вещах. Это была огромная помощь. – theAnon