Hallo,
ich schreibe gerade an einem kleinen Schiffe versenken Spiel. Um die Schiffe zu platzieren, soll man sie mit der Maus ziehen können. Hierfür verwende ich onMouseDragDetected, onMouseDragExited, OnMouseDragEntered und onMouseDragReleased. Soweit funktioniert alles ganz gut, aber ich habe folgendes Problem: Nachdem onMouseDragReleased aufgerufen wurde, wird automatisch onMouseDragExited aufgerufen!
Hier mein Code:
Beim draggen wird das erste Feld grün, und das Feld, auf dem ich drauf bin ist rot. Wenn ich los lasse, wird das rote Feld auch grün (weil mouseDragExited aufgerufen wird - mit println() geprüft!)
Habt ihr irgendeine Ahnung, woran das liegen könnte?
Viele Grüße,
mathiasj
ich schreibe gerade an einem kleinen Schiffe versenken Spiel. Um die Schiffe zu platzieren, soll man sie mit der Maus ziehen können. Hierfür verwende ich onMouseDragDetected, onMouseDragExited, OnMouseDragEntered und onMouseDragReleased. Soweit funktioniert alles ganz gut, aber ich habe folgendes Problem: Nachdem onMouseDragReleased aufgerufen wurde, wird automatisch onMouseDragExited aufgerufen!
Hier mein Code:
Java:
public class DragDetectedHandler implements EventHandler<MouseEvent> {
@Override
public void handle(MouseEvent e) {
PlayingfieldField field = (PlayingfieldField) e.getSource();
field.fillInnerRect(Color.GREEN);
field.startFullDrag();
e.consume();
}
}
public class MouseDragEnteredHandler implements EventHandler<MouseDragEvent> {
@Override
public void handle(MouseDragEvent e) {
PlayingfieldField field = (PlayingfieldField) e.getSource();
field.setInnerOpacity(0.5);
field.fillInnerRect(Color.RED);
e.consume();
}
}
public class MouseDragExitedHandler implements EventHandler<MouseDragEvent> {
@Override
public void handle(MouseDragEvent e) {
System.out.println("mouse drag exited");
PlayingfieldField field = (PlayingfieldField) e.getSource();
field.setInnerOpacity(1);
field.fillInnerRect(Color.GREEN);
e.consume();
}
}
public class MouseDragReleasedHandler implements EventHandler<MouseDragEvent> {
@Override
public void handle(MouseDragEvent e) {
System.out.println("mouse drag released");
PlayingfieldField field = (PlayingfieldField) e.getSource();
field.setInnerOpacity(1);
field.fillInnerRect(Color.RED);
e.consume();
}
}
}
Beim draggen wird das erste Feld grün, und das Feld, auf dem ich drauf bin ist rot. Wenn ich los lasse, wird das rote Feld auch grün (weil mouseDragExited aufgerufen wird - mit println() geprüft!)
Habt ihr irgendeine Ahnung, woran das liegen könnte?
Viele Grüße,
mathiasj