ball.y = ball.y + 8;
Se ei kuitenkaan toimi. Sijoituksen oikealle puolelle saadaan ensimmäisen pallon y-koordinaatti, johon lisätään kahdeksan. Sitten saatu uusi arvo asetetaan kaikkien pallojen y-koordinaatiksi, jolloin ne kaikki saavat saman y-koordinaatin. Lause
ball.y += 8;
toimii täsmälleen samalla tavalla, koska se on vain edellisen lauseen lyhyempi muoto. Miten päästään siis haluttuun lopputulokseen? Tähän tarkoitukseen on olemassa with-lause. With-lause on muotoa
with (<lauseke>) <lause>
<lauseke> vastaa yhtä tai useampaa instanssia, ja siinä voidaan käyttää instanssin id-tunnistetta, objektin nimeä (jolloin valitaan kaikki objektin instanssit) tai jotakin erikoisobjektia (all, self, other, noone). Nyt <lause&rt; suoritetaan jokaiselle instanssille erikseen kuin ne olisivat nykyisiä (self) instansseja. Palloja voidaan siis siirtää kahdeksan pikseliä alaspäin seuraavasti:
with (ball) y += 8;
Jos halutaan suorittaa useampia lauseita kerralla, niiden ympärille tulee laittaa aaltosulut. Jos siis halutaan esimerkiksi siirtää kaikki pallot sattumanvaraisiin sijainteihin, voidaan käyttää seuraavaa koodia:
with (ball) { x = random(room_width); y = random(room_height); }
Huomaa, että with-lauseen sisällä self-instanssilla viitataan with-lauseen määräämään instanssiin, ja alkuperäinen instanssi on muuttunut other-instanssiksi. Jos siis halutaan siirtää kaikki pallot nykyisen instanssin sijaintiin, voidaan käyttää seuraavaa koodia:
with (ball) { x = other.x; y = other.y; }
With-lausetta voidaan käyttää hyvin tehokkaasti. Tässä pari lisäesimerkkiä. Kaikki pallot voi tuhota seuraavasti:
with (ball) instance_destroy();
Jos pelissä räjähtää pommi ja kaikki sen lähellä olevat instanssit halutaan tuhota, voidaan käyttää seuraavaa koodia:
with (all) { if (distance_to_object(other) < 50) instance_destroy(); }