В настоящее время я программирую жест перетаскивания для карточной игры. Я хочу переместить карту из одной стопки в другую.
Сначала я определяю перетаскивание с помощью OnDragDetected
, затем перемещаю карту в соответствии с фактическим положением мыши, пока мышь не будет отпущена. С тех пор есть два случая: либо карта была перетащена в другой стек, либо она была перетащена в пустоту.
Для первого случая другой стек вызовет событие mouseEntered
, поэтому я могу справиться. Моя проблема в том, как определить второй случай?
Событие mouseEntered вызывается сразу после события onMouseReleased. Может быть, я могу проверить, есть ли одно событие непосредственно после другого, тогда это первый случай, в противном случае второй. Возможно ли что-то подобное?
public void onDragDetected(MouseEvent event) {
ImageView card = (ImageView) event.getSource();
root.setOnMouseDragged(e -> {
//Move card according to actual mouse position
});
root.setOnMouseReleased(e -> {
});
}
public void mouseEntered(MouseEvent event) {
//Put card in new stack
ImageView newCard = (ImageView)event.getSource();
newCard.setImage(card.getImage());
}