This site requires JavaScript, please enable it in your browser!
Greenfoot back
Cocky
Cocky wrote ...

2012/9/22

removeObjects()

Cocky Cocky

2012/9/22

#
Hallo, ich habe eine Frage: Wie wird die Methode removeObjects() geschrieben? Nein anders: Wie schreibe ich die Parameter für die Methode removeObjects() ?
Gevater_Tod4711 Gevater_Tod4711

2012/9/22

#
You need an Collection object which is not easy to handle. You should better use removeObject() which only gots one Actor as parameter. If you need to use removeObjects() try something like this:
removeObjects(getWorld().getObjects(Class.class));
//Class should be the classname from the objects you want to remove.
Im not shure if this will work because getObjects returns a List which is only a subclass of Collection. You have to try. Oder auf Deutsch: Du brauchst ein Objekt vom typ Collection und es ist nicht so leicht damit umzugehen. Wenn möglich solltest du removeObject() verwenden weil das als Parameter nur einen Object vom typ Actor benötigt (das sind alle klassen die unterklassen von Actor sind). Wenn du unbedingt removeObjects() verwenden willst versuch das:
removeObjects(getWorld().getObjects(Class.class));
//Class ist die Klasse von der du alle vorhandenen Objekte zerstören willst.
Ich bin nicht sicher ob der Code funktioniert weil getObjects ein object vom Typ List liefert und List ist nur eine Unterklasse von Collections. Das musst du ausprobieren.
Cocky Cocky

2012/9/22

#
danke
Cocky Cocky

2012/9/22

#
der Code funkioniert nicht
Cocky Cocky

2012/9/22

#
wie gefällt dir eigentlich mein jetztiges Brekout1?
Gevater_Tod4711 Gevater_Tod4711

2012/9/22

#
Welcher Code funktionier nicht der mit removeObjects()? Tja das war auch nur ne vermutung. Verwende am besten removeObject() in ner schleife. Das Breakout is gut. Sieht echt viel besser aus als das alte.
erdelf erdelf

2012/9/22

#
der vorhin genannte code ist nur nicht fertig. Du übergibst eine gesamte Liste von Objekten, dieser Befehl will nur eins.
removeObjects(getWorld().getObjects(Class.class).get(0)); 
// das ist für ein Objekt dieser Klasse 
oder um alle Objekte einer Klasse zu removen:
        List explodeEm = getIntersectingObjects(Class.class);        
        Iterator i = explodeEm.iterator();
        while(i.hasNext()) {
            Actor a = (Actor) i.next();
            getWorld().removeObject(a);
            }
        
Gevater_Tod4711 Gevater_Tod4711

2012/9/22

#
das macht relativ wenig sinn oder? Wenn ich mit removeObjects() auch nur ein object zerstören kann kann ich doch direkt removeObject() benutzen und mit ner schleife arbeiten wenn ich mehrere Objecte zerstören will. Für mich ergibt das keinen Sinn aber es muss ja auch nicht immer alles einen Sinn ergeben damit man es benutzen kann.
Cocky Cocky

2012/9/22

#
der Compiler erkennt aber nicht die Klasse Iterator
Gevater_Tod4711 Gevater_Tod4711

2012/9/22

#
die muss du auch erst mal importieren.
import java.util.Iterator;
//das schreibst du unter import greenfoot.*;
Cocky Cocky

2012/9/22

#
ach so danke
Gevater_Tod4711 Gevater_Tod4711

2012/9/23

#
Ich hab grad mal ausprobiert Objekte mit removeObjects() zu zerstören. Also bei mir funktionier dieser Code:
public void removeAllObjects() {
    removeObjects(getObjects(null)); //zerstört alle Objekte in der Welt
}
Ich glaube ich kenne den Fehler der dazu führt das das bei dir nicht funktioniert: removeObjects() ist eine methode die in World deklariert ist, was bedeutet das das:
removeObjects(getObjects(Class.class));
nur in der world funktionieren wird. Aber das:
getWorld().removeObjects(getWorld().getObjects(Class.class)); //Class musst du natürlich wieder durch die Classe ersetzen die du zerstören willst.
sollte eigentlich in jeder Klasse funktionieren.
You need to login to post a reply.