Syntaxe
Ouvre un bloc où \property appelle la commande du catalogue <Family><Property> sur un objet, pour n’écrire qu’une fois son identifiant et le nom de la famille.
WITH <FAMILY> <expression>
\<property> [<arguments>]
… \<property> …
ENDWITH
END WITHS’écrit aussi : WITH SPRITE
Les éléments
| <FAMILY> | Un mot qui commence des noms de commandes du catalogue : SPRITE, TEXT, OBJECT, CAMERA, PARTICLES, IMAGE, MUSIC, MEMBLOCK… |
|---|---|
| <expression> | L’identifiant de l’objet, passé en premier argument : une variable, ships[3], un nombre comme 1. |
| <property> | La fin du nom de commande : \position avec SPRITE appelle SpritePosition(). |
| <arguments> | Les autres arguments d’une écriture, séparés par des virgules, sans parenthèses. |
À savoir
- La place décide du sens. En tête d’instruction,
\propécrit :\x 50vaut SpriteX(s, 50). Partout ailleurs, il lit :x# = \xvaut SpriteX(s). - Une écriture n’a pas de
=.\x = 50n’est pas refusé, mais le programme produit ne démarre pas. - Une écriture doit ouvrir l’instruction. Dans
IF … THEN \visible 1, le\visibleest pris pour une lecture et le programme ne démarre pas. Utilisez unIFen bloc, comme dans l’exemple. - Une propriété absente du catalogue est une erreur de compilation : « Unknown property in WITH SPRITE: \positon ».
- Les lignes qui ne commencent pas par
\sont des instructions ordinaires. Pas d’imbrication : un WITH dans un WITH est refusé. - Les noms d’AGK comme
SetSpritePositionouGetSpriteXn’existent pas : l’objet d’abord, la propriété ensuite, sansSetniGet.
Exemple
s = CreateSprite(0)WITH SPRITE s \position 100, 200 \size 64, 64 \x 50 x# = \x IF \visible = 0 \visible 1 ENDIFENDWITHConsole(Str(x#) + " " + Str(SpriteY(s))) ' 50 200Dans le manuel : Raccourcis