Java / Greenfoot: Wie kann ich mein BANANA-Objekt verschwinden und nach wenigen Sekunden wieder spawnen lassen?
Hallo zusammen,
ich muss für die Schule ein Informatik-Projekt machen und möchte gerne die BANANA nach wenigen Sekunde verschwinden, jedoch nach wenigen Sekunden wieder spawnen lassen.
Mein Problem ist, dass ich, seitdem ich diesen Part:
timer3 = timer3 + 1;
if (timer3 > 500) {
getWorld().removeObject(this);
}
benutzt habe, zwar die BANANA verschwindet, mein Programm allerdings danach anhält.
Hat jemand eine Idee, was ich machen kann?
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class BANANA extends Actor {
public static int Score;
int timer3;
public BANANA() {
getImage().scale(30, 30);
}
public void act() {
timer3 = timer3 + 1;
if (timer3 > 500) {
getWorld().removeObject(this);
}
if (isTouching(Spieler.class)) {
getWorld().removeObject(this);
Score = Score + 10;
}
}
public void Score() {
}
}
3 Antworten
Wahrscheinlich entfernt removeObject die Referenz. Du musst dir die Referenz merken und anschließend das Objekt erneut hinzufügen.
Möglicherweise gibt es aber auch andere Methoden um ein Objekt unsichtbar zu machen.
Ich kenne den Programmcode nicht, deswegen sind das nur Vermutungen.
Schau mal in der Dokumentation zu der Actor Klasse, die du da verwendest, ob es da so etwas wie setActive(bool) oder isEnabled(bool) gibt. Das gibt es zumindest bei den größeren Engines wie Unity oder Unreal Engine 4, warum also auch nicht hier.
RemoveObject(Actor) zerstört dein Objekt vermutlich ganz und macht es nicht nur unsichtbar.
Nachdem ich mir die API mal angeschaut habe, scheint es da tatsächlich keine direkte Möglichkeit zu geben. Wie wäre es, wenn du statt die Banane zu zerstören diese einfach hinter die Kamera plazierst, so dass sie nicht mehr für den Spieler sichtbar ist?
ich würde mal sagen nachdem das Objekt entfernt ist wird im Hauptprogramm kein neues mehr kreiert und deswegen Ende.
Warum kannst du wohl aus der Klasse Actor sehen. Ich schätze mal du darfst nicht removeObject nehmen sondern was anderes, das die Banane z.B. in Hintergrundfarbe zeichnet.
Weißt du zufällig einen Befehl das Objekt unsichtbar zu machen?