Почему мое изображение продолжает перемещаться в AnchorPane при перетаскивании? - PullRequest
0 голосов
/ 31 августа 2018

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

@FXML
private ImageView imageId;

@FXML
private AnchorPane imagePane;

private double startX;
private double startY;

@FXML
private void loadImage(){
    double width = imagePane.getWidth();
    double height = imagePane.getHeight();
    Image image = new Image("main/buttercup2.jpg");
    imageId.setImage(image);
    imageId.setX(width/10);
    imageId.setY(height/10);
}

@FXML
private void closeImage(){
    imageId.setImage(null);
}


// ****below is the part where I am having trouble****

@FXML
private void initialize(){
    imageId.setOnMousePressed(e -> {
        startX = e.getSceneX();
        startY = e.getSceneY();
    });

    imageId.setOnMouseDragged(e -> {
        imageId.setTranslateX(e.getSceneX() - startX);
        imageId.setTranslateY(e.getSceneY() - startY);
    });
}

1 Ответ

0 голосов
/ 31 августа 2018

Вы не включаете начальные translateX и translateY в свои расчеты. Таким образом, небольшие движения сбрасывают перевод до значений, близких к 0. Включение начальных значений в расчет должно решить эту проблему:

imageId.setOnMousePressed(e -> {
    startX = e.getSceneX() - imageId.getTranslateX();
    startY = e.getSceneY() - imageId.getTranslateY();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...