Es geht darum, beim laufen den Screen zu zu wechseln(Neuer Hintergrund, neue Spielerkoordinaten).Das habe ich schon vor Monaten gemacht, aber eine Sache hat mich da gejuckt, also schreibe ich die Sache um. In der Game-Loop gibt es eine Methode checkKlicks(), die für den Screen gerade eine Metode zum Laufen ausführt.
switch(screen){
case 1:
le.move(this, spPosaktX, spPosaktY, klickx, klicky, 1, anim);
break;
case 2:
le.move(this, spPosaktX, spPosaktY, klickx, klicky, 2, anim);
break;
case 3:
le.move(this, spPosaktX, spPosaktY, klickx, klicky, 3, anim);
so.GesprächInitiiren(new Point(klickx, klicky), 1);
break;
case 4:
le.move(this, spPosaktX, spPosaktY, klickx, klicky, 4, anim);
break;
}
klick = false;
}
Es soll von screen 3 nach screen 2 gehen.In der Methode move() wird gelaufen und nach dem laufen eine Methode, namens zumNächstenScreen aufgerufen, die prüft, ob die bestimmte Fläche zum Wechsel geklickt wurde.
switch (screen) {
case 0:
break;
case 1:
if (positionx > s.getWidth() - 200
&& positiony > s.getHeight() - 400) {
s.neuerscreen = true;
s.screen = 2;
s.spPosaktX = 100;
s.spPosaktY = 100;
s.currentindex = 1;
s.currentbackgroundindex = s.screen + 1;
s.repaint();
}
break;
case 2:
if (positionx < 300 && positiony < 200) {
s.neuerscreen = true;
s.screen = 1;
s.spPosaktX = 1400;
s.spPosaktY = 300;
s.currentindex = 1;
s.currentbackgroundindex = s.screen + 1;
s.repaint();
} else if (positionx > 600 && positionx < 1000 && positiony > 200
&& positiony < 700) {
s.neuerscreen = true;
s.screen = 3;
s.spPosaktX = 100;
s.spPosaktY = 0;
s.currentindex = 1;
s.currentbackgroundindex = s.screen + 1;
s.repaint();
}
s.neuerscreen = false;
break;
case 3:
if (positionx > s.getWidth() - 200) {
s.screen = 4;
s.spPosaktX = 100;
s.spPosaktY = 0;
s.currentindex = 1;
s.currentbackgroundindex = s.screen +1;
s.repaint();
} else if (positionx > 200 && positionx < 500 && positiony < 400) {
System.out.println("geht1");
s.neuerscreen = true;
s.screen = 2;
s.spPosaktX = 550;
s.spPosaktY = 200;
s.currentindex = 1;
s.currentbackgroundindex = s.screen + 1;
s.repaint();
}
s.neuerscreen = false;
break;
case 4:
if (positionx < 300 && positiony < 200) {
s.neuerscreen = true;
s.screen = 3;
s.spPosaktX = s.getWidth() - 100;
s.spPosaktY = 300;
s.currentindex = 1;
s.currentbackgroundindex = s.screen + 1;
s.repaint();
}
}
Bei ALLEN funktioniert es wunderbar, bloß bei screen 3, zweite if-clause, passiert folgendes:
Die Figur läuft auf die Tür zu, „durchschreitet“ jene, der Hintergrund ändert sich, doch die Figur bleibt nicht bei den angegebenen Koordinaten stehen, sie läuft munter weiter und beamt sich erst nach kurzer zeit zu den angegebenen Koordinaten.
Meine Frage: WARUM ???