[Java]Bild bewegen

$

$$Money$$

Hallo,

Ich habe ein Problem ich möchte gerne die Variable "police_ypos" laufend um 1 erhöhen und wenn der Wert der Variable 750 beträgt soll er wieder auf 0 gesetzt werden. Danach soll das ganze wieder vorne beginnen. Leider funktioniert das nicht ich habe bereits folgene Beispiele ausprobiert.

Code:
for(police_ypos=0; police_ypos<750; police_ypos++){
	bildanzeige.repaint();
}	
for(police_ypos=750; police_ypos>749; police_ypos=0){
	bildanzeige.repaint();
}

Code:
while(police_ypos < 750){
police_ypos++;

if(police_ypos > 749){
police_ypos = 0;
}
}

Vielen Dank für eure Hilfe,

MfG:

Thomas
}
 
guck dir mal deinen code an. Der zweite war schon fast richtig. Aber deine IF Bedingung wird nie ausgeführt, da deine while Schleife vorher aufhört. Du musst noch ein = einfügen:

Code:
while(police_ypos < 750){
police_ypos++;
//der Wert wird nie größer als 749, da die while schleife bei 749 aufhört.
if(police_ypos >= 749){
police_ypos = 0;
}
}


Gruß
Flo
 
Danke für deine Hilfe,

dein Beispiel wird ohne reklamationen kompiliert, jedoch wird beim ausführen nichts mehr angezeigt weder meine Bilder noch das Fenster.

Ich hab das gefühl das ist so weil die while schleife gar nicht mehr beendet wird kann das sein

MfG...
 
Klar, die while-Schleife wird nie verlassen.

Du musst das ganze in einem eigenen Thread starten, damit deine Grafik gezeichnet wird. Sonst blockiert die Schleife das Zeichnen.

Ich glaub hier in dem Buch http://www.javabuch.de/ gibt es ein Kapitel zum Thema Animationen. Da wird beschrieben, was du beachten musst.

Gruß
Flo
 
Vielen dank für deinen Tipp, ich habe das Problem folgendermasen gelöst:

Code:
  class bewegen extends Thread{
	public void run(){
		while (police_ypos < 750) {
			police_ypos++;
				if(police_ypos >=749){
					police_ypos = 0;
					police_xpos = (int) (Math.random()*600+100);
				}
			bildanzeige.repaint();
			try {       
				Thread.sleep(10);
			} 
			catch (InterruptedException e) {
				interrupt();     
			}
		}
   }
 }
 
Habe schon wieder eine neue Frage.

Folgendes wie kann ich einen Thread z.B. bei einem klick auf einen Button "pausieren" und dann beim klick auf einen Anderern Button den Thread an der gestoppten Stelle fortfahren?

MfG:
 
Den Thread kannst du nicht pausieren, aber du kannst dir ein Flag boolean pause machen welches du dann in deinem Thread abfragst und wenn dies auf true steht eben halt das Bild nicht weiter verschiebst.
 
Hmm..

Danke für deine Antwort ich kann genau nachvollziehen wie du das machen würdest beim umsetzen ist es aber gescheitert ich kriegs einfach nicht hin.

Kannst du da evt. auch noch helfen?

MfG
 
Also ich kann zwar mit folgendem Code mit Hilfe der Boolean Variable "flag" den Thread stoppen (wenn sie auf "false" steht). Wenn ich die Variable aber wieder auf "true" setzte startet der Thread nicht.

Code:
  class polizei extends Thread{
	public void run(){
		while (flag == true && police_ypos < 480) {
			police_ypos += police_speed;
				if(police_ypos >=480){
					while(true){
						police_ypos = generator.nextInt(350);
						if(police_ypos < 120){
						continue;
						}
						police_ypos = police_ypos/-1;
						break;
					}
					while(true){
						police_xpos = generator.nextInt(693);
						if(police_xpos <210){
							continue;
						}
						break;
					}
					police_speed += 0.3;
				}
			bildanzeige.repaint();
			try {       
				Thread.sleep(10);
			} 
			catch (InterruptedException e) {
				interrupt();     
			}
		}
	}

Wie kann ich das ändern

MfG:
 
Zurück