Dot notation

Instruction

Syntaxe

Attache une famille de commandes à une variable : s.position(100, 200) appelle alors SpritePosition(s, 100, 200) et s.x lit SpriteX(s), partout dans le programme.

<var> = Create<Family>(…)
<var> AS <Family>
<var>.<property>(<arguments>)
<var>.<property> = <value>
… <var>.<property> …

S’écrit aussi : s.position(x, y)

Les éléments

<var>Une variable qui contient l’identifiant d’un objet.
<Family>La famille de commandes : déduite de Create<Family>(, Load<Family>( ou Clone<Family>( quand c’est tout le membre de droite, ou déclarée avec AS Sprite, AS Object, AS Camera…
<property>La fin d’un nom de commande du catalogue de cette famille : position, x, visible…
<arguments>Les autres arguments de la commande. Les lectures qu’ils contiennent sont réécrites aussi.
<value>La valeur à écrire. Elle est recopiée telle quelle, sans réécriture.

À savoir

  • L’écriture avec = ne réécrit pas son membre de droite. Dans s.angle = s.angle + 5, le s.angle de droite reste tel quel et le sprite reçoit autre chose qu’un nombre, sans erreur. Utilisez la forme appel : s.angle(s.angle + 5).
  • L’écriture avec = doit être une instruction entière. Après THEN dans un IF sur une ligne, utilisez la forme appel : IF s.visible = 0 THEN s.visible(1).
  • CreateObjectBox(), CreatePointLight() et les autres noms de création qui portent plus que la famille n’en donnent aucune : déclarez d’abord box AS Object. CreateObjectSphere() donne une mauvaise famille qui l’emporte sur AS Object : utilisez sa forme qui prend un identifiant.
  • Une famille n’est pas un type de paramètre : FUNCTION Move(s AS Sprite) est refusé (« Unknown BASIC parameter type »). Prenez le paramètre sans type et écrivez s AS Sprite à la première ligne du corps.
  • Une propriété inconnue est une erreur de compilation : « Unknown property on sprite: .positon ». Seulement des propriétés : s.delete() est refusé, écrivez DeleteSprite(s).
  • Restent intacts : les variables sans famille, les champs d’enregistrement (hero.health), les membres de liste ou de map, SELF.field dans une méthode, et l’intérieur des chaînes.

Exemple

img = LoadImage("hero.png")s = CreateSprite(img)s.position(100, 200)s.visible = 1s.x(s.x + 10)Console(Str(s.x) + " " + Str(s.visible))   ' 110 1
Dans le manuel : Raccourcis