Den Game Maker benutzen
With Konstruktion
Wie oben angegeben ist es möglich, die Variablen anderer Instanzen zu verarbeiten. Aber es kann vorkommen, das du noch mehr mit den anderen Instanzen tun möchtest. Z.B. alle Bälle um 8 Pixel nach unten Bewegen. Du denkst wohl, das dies mit folgendem Code gemacht werden kannball.y = ball.y + 8;
Das ist aber nicht richtig. Dieser Code nimmt die y Koordinate des ersten Balls und fügt 8 hinzu. Dann wird dieser neue Wert als y-Koordinate aller Bälle gesetzt. Das Ergebnis wäre, dass alle Bälle an der selben y-Koordinate sind. Das Statement
ball.y += 8;
hat den selben Effekt, es ist nur eine Variante unseres oberen Beispiels. Wie erreichen wir dies also? Dafür gibt es das with Statement. Die allgemeine Form ist
with (<expression>) <statement>
<expression> gibt eine oder mehrere Instanzen an. Du kannst eine Instanz-ID, den Objektnamen (um alle Instanzen zu adressieren) oder eines der speziellen Objekte (all, self, other, none) angeben. <statement> wird dann für jede Instanz ausgeführt, als wäre diese die aktuelle (self) Instanz. Um also alle Bälle 8 Pixel nach unten zu bewegen, kannst du folgendes eingeben.
with (ball) y += 8;
Wenn du mehrere Aufgaben durchführen möchtest, mache geschweifte Klammern drumherum. Um z.B. alle Bälle an eine zufällige Position zu bewegen, benutze
with (ball)
{
x = random(room_width);
y = random(room_height);
}
Beachte das in den Statements die angegebene Instanz die self-Instanz wird. Die ursprüngliche self-Instanz wurde zur other-Instanz. Um z.B. alle Bälle auf die Position der Instanz zu setzen, nutze
with (ball)
{
x = other.x;
y = other.y;
}
Das with Statement ist sehr leistungsfähig. Ich geb dir ein paar mehr Beispiele. Um alle Bälle zu zerstören, nutze
with (ball) instance_destroy();
Wenn eine Bombe explodiert und du alle Instanzen in der Nähe zerstören möchtest, nutze
with (all)
{
if (distance_to_object(other) < 50) instance_destroy();
}
Alternative Versionen
Auch verfügbar in:
Download helpfile