P
PunktPunktPunkt
Gast
Hallo,
Vorab: sorry für den ebenso irritierenden Titel; mir ist einfach nichts treffenderes eingefallen.
Also erstmal der Code:
Und die move()-Methode sieht so aus:
Also meine Intention ist glaube ich recht klar zu erkennen: wenn an den linken Rand des Bildschirms gelaufen wird, dann soll das Hintergrundbild verändert werden; das klappt beim ersten Bild auch. Nur beim zweiten springt der immer wieder auf Position x=200 wenn man am Rand geht ohne dass das Hintergrundbild sich ändert, was ja darauf schließen lässt, dass das inGebiet1-Flag immer noch gesetzt ist (er scheint ja die erste, nicht wie ich es will die zweite, der if-Clauses zu durchlaufen). Ich versteh nicht ganz warum, weil in der ersten if-Clause wird doch, sobald in sie eingetreten wird, inGebiet1 auf false gesetzt, er müsste doch eigentlich dann die zweite if-Clause machen wenn man an den Rand geht (weil ja eben die Bedingung der ersten, dass inGebiet1 true ist, nicht erfüllt sein dürfte, die Bedingung der zweiten, inGebiet2 = true, aber doch)?
Wahrscheinlich ein sehr offensichtlicher Fehler, aber ich raffs grad nicht. Weiß vielleicht jemand wo mein Denkfehler ist?
Danke!
Grüße,
PPP
Vorab: sorry für den ebenso irritierenden Titel; mir ist einfach nichts treffenderes eingefallen.
Also erstmal der Code:
Java:
public void actionPerformed(ActionEvent arg0) {
grafikenMalen.move();
if ((grafikenMalen.x > 0) && (grafikenMalen.x < 10) && (grafikenMalen.inGebiet1 = true)) {
grafikenMalen.inGebiet1 = false;
grafikenMalen.inGebiet2 = true;
grafikenMalen.hintergrund = "IMG2.JPG";
grafikenMalen.ii = new ImageIcon(this.getClass().getResource(grafikenMalen.hintergrund));
grafikenMalen.image2 = grafikenMalen.ii.getImage();
grafikenMalen.x = 200;
}
else if ((grafikenMalen.x > 0) && (grafikenMalen.x < 10) && (grafikenMalen.inGebiet2 = true)) {
grafikenMalen.hintergrund = "IMG1.gif";
grafikenMalen.x = 150;
grafikenMalen.ii = new ImageIcon(this.getClass().getResource(grafikenMalen.hintergrund));
grafikenMalen.image2 = grafikenMalen.ii.getImage();
grafikenMalen.inGebiet1 = true;
grafikenMalen.inGebiet2 = false;
}
repaint();
}
Und die move()-Methode sieht so aus:
Java:
public void move() {
if (zielx > x)
x++;
else if (zielx < x)
x--;
if (ziely > y)
y++;
else if (ziely < y)
y--;
}
Also meine Intention ist glaube ich recht klar zu erkennen: wenn an den linken Rand des Bildschirms gelaufen wird, dann soll das Hintergrundbild verändert werden; das klappt beim ersten Bild auch. Nur beim zweiten springt der immer wieder auf Position x=200 wenn man am Rand geht ohne dass das Hintergrundbild sich ändert, was ja darauf schließen lässt, dass das inGebiet1-Flag immer noch gesetzt ist (er scheint ja die erste, nicht wie ich es will die zweite, der if-Clauses zu durchlaufen). Ich versteh nicht ganz warum, weil in der ersten if-Clause wird doch, sobald in sie eingetreten wird, inGebiet1 auf false gesetzt, er müsste doch eigentlich dann die zweite if-Clause machen wenn man an den Rand geht (weil ja eben die Bedingung der ersten, dass inGebiet1 true ist, nicht erfüllt sein dürfte, die Bedingung der zweiten, inGebiet2 = true, aber doch)?
Wahrscheinlich ein sehr offensichtlicher Fehler, aber ich raffs grad nicht. Weiß vielleicht jemand wo mein Denkfehler ist?
Danke!
Grüße,
PPP