Debug-Funktion mit Slick - Kleines Problem

oOJavaNeulingOo

Bekanntes Mitglied
Hi!

Ich habe versucht eine kleine Debugfunktion mit Slick zu schreiben. Diese Methode wird beim rendern aufgerufen:

Java:
	public void debug(Graphics g, GameContainer gc){
		if(SG.debug){
			g.drawString("-DebugMode-", 0, 0);
			g.drawString("FPS:" + gc.getFPS(), 0, 15);
		}else{
		}
	}

Und diese beim update:
Java:
	private boolean
	canCallDebugF3 = true;
	
	
	public void debugKey(Input in){
		if(! canCallDebugF3){
			return;
		}
		if(in.isKeyDown(Input.KEY_F3)){
			canCallDebugF3 = false;
			SG.debug = (SG.debug)?false:true;
			final Timer timer = new Timer("Debug-Timer");
			TimerTask timerTask = new TimerTask(){
			  public void run() {
				  if(! canCallDebugF3){
					  canCallDebugF3 = true;
					  timer.cancel();
				  }
			  }
			};

			timer.scheduleAtFixedRate(timerTask, 1,  1000);
			
		}
	}

Jedoch kann man den Debug mode trotzdem richtig oft in der sekunde an/aus schalten, und er will auch nicht immer- Sondern blitzt auf, verschwindet, blitzt auf, verschwindet, usw..

Wie kann ich das lösen?
 
Dann musst du dir merken, wann das letzte Auslösen erkannt wurde und Tastendrücke, die zu kurz nach dem letzten erfolgen, ignorieren.
 
Da brauchst du doch keinen TimerTask für. Einfach die Systemzeit merken, beim ersten Drücken (und beispielsweise beim Start). Dann sehen, ob das letzte Drücken zu kurze Zeit zurück liegt.
 

Zurück
Oben