ball.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();
}