User Input Kapseln

Grejak

Aktives Mitglied
Für ein kleines Spiel muss ich Maus und Tastatur Signale abfangen( Ist ja klar).
Da ich es aber leid bin in meine Programme immer die ganzen Methoden der Interfaces zu implementieren.:pueh: Habe ich daran gedacht alle Methoden in eine Klasse zu Kapseln.

Code:
Java:
public final class Mouse extends MouseInputAdapter{

	private static final long serialVersionUID=1L;
	
	private int x;
	private int y;
	private int oldX;
	private int oldY;
	
	private boolean dragged;
	private boolean rightButton;
	private boolean middleButton;
	private boolean leftButton;
	
	public Mouse(){
		init();
	}
	
	public void init(){
		setX(0);
		setY(0);
		oldX=x;
		oldY=y;
		dragged=false;
		rightButton=false;
		middleButton=false;
		leftButton=false;
	}
	
	public void mousePressed(MouseEvent e) {	
		if(e.getButton()==1)
			leftButton=true;
		if(e.getButton()==2)
			middleButton=true;
		if(e.getButton()==3)
			rightButton=true;
		updateCoord(e);
	}
	public void mouseReleased(MouseEvent e) {
		if(e.getButton()==1){
			leftButton=false;
		}
		if(e.getButton()==2){
			middleButton=false;
		}
		if(e.getButton()==3){
			rightButton=false;
		}
		updateCoord(e);
		dragged=false;
	}

	public void mouseDragged(MouseEvent e) {
		updateCoord(e);
		dragged=true;
	}
	public void mouseMoved(MouseEvent e) {
		updateCoord(e);
		dragged=false;
	}
	
	private void updateCoord(MouseEvent e){
		oldX=x;
		oldY=y;
		setX(e.getX());
		setY(e.getY());
	}
	
	public int getX(){
		return x;
	}
	private void setX(int x){
		this.x=x;
	}
	public int getY(){
		return y;
	}
	private void setY(int y){
		this.y=y;
	}
	public Point2D.Float getLocation(){
		return new Point2D.Float(getX(),getY());
	}
	public boolean wasMoved(){
		if(oldX!=x||oldY!=y){
			oldX=x;
			oldY=y;
			return true;
		}
		return false;
	}
	
	public boolean isDragged(){
		return dragged;
	}
	public boolean isRightButtonPressed(){
		return rightButton;
	}
	public boolean isMiddleButtonPressed(){
		return middleButton;
	}
	public boolean isLeftButtonPressed(){
		return leftButton;
	}
}
//Hilfe aus ApoCommand

Jetzt kommt aber das Problem:

Ich weiß nicht wie ich überprüfen soll ob ein Knopf released wurde.

Wenn das Hilft in meinem Gameloop warte ich 20 MilliSekunden vor dem nächsten durchlauf.
 

Polli86

Mitglied
Hallo Grejak,

Wenn ich das richtig verstanden habe, dann musst du eigentlich nur an deinen
aktiven Component, also der auf dem die Maus rumklickt, ein addMouseListerner
mit deiner "Maus"-Klasse als Parameter dranhängen.

Bsp.:
Java:
           JPanel panel = new JPanel();   // Komponente auf der rumgeklickt wird...
           panel.addMouseListener(new Mouse());

Ich hoffe das hilft ^^, ansonsten mehr Input ;)

MfG
Polli
 

Ähnliche Java Themen


Oben