Je rappelle que tout le code que je donne sans indication se place de la façon suivante : vous devez être sur la scène principale, sélectionner une image clé dans le scénario et ouvrir le panneau action. C'est là que vous pourrez mettre le code ! Si vous ne vous rappelez plus de ce qu'est un clip ou comment les créer, retournez lire ce chapitre :
Où je le mets ce fichu code ?
_root
Nous avons déjà vu dans le premier chapitre que le clip parent à tous les autres clips, qu'on appelle la scène principale, se nommait
_root.
Maintenant que nous avons quelques notions d'ActionScript, intéressons-nous à la signification de ce
_root.
Code : Actionscript | var monnombre:Number = 10;
trace(monnombre);
trace(_root.monnombre);
|
La fenêtre de sortie va vous afficher deux fois
10.
Cela signifie que sur la scène principale,
_root.monnombre = monnombre
C'est logique, puisque vu qu'on est dans
_root, on a pas besoin de le repréciser !
Le
. entre
_root et
monnombre, permet de dire au compilateur que l'un est inclus dans l'autre. En effet la variable appartient à l'objet
_root (en Mathématiques on parlerait d'ensemble).
Maintenant, on va faire une chose ignoble, mais nécessaire à l'apprentissage : on va mettre du code dans un clip !
Créez une nouveau clip, mettez-le sur la scène principale et nommez le
monclip (oui, je sais, l'originalité n'est pas mon fort

et au passage, je précise que je parle de son nom d'occurrence).
Allez dans une image clé de ce clip (double-cliquez sur le clip), et tapez dans l'onglet action :
Code : Actionscript | trace(" monnombre => "+monnombre);
trace(" _root.monnombre => "+_root.monnombre);
|
Et laissez seulement ça sur la scène principale :
Code : Actionscript | var monnombre:Number = 10;
|
Voyons ce que nous affiche la fenêtre de sortie :
Code : Actionscript | monnombre => undefined
_root.monnombre => 10
|
Et là on constate en effet qu'essayer d'afficher la variable qui est déclarée dans
_root, mais pas dans le clip, ne fonctionne pas si on ne précise pas que cette variable se trouve sur
_root. Le
undefined signifie que la variable n'est pas définie, car elle n'existe pas dans le clip
monclip.
En clair, la variable
monnombre existe dans
_root.
Mais elle n'existe pas dans
_root.monclip.
Pour y accéder à partir de
_root.monclip, il faut préciser où elle se trouve :
_root.monnombre.
this
Voilà une propriété que nous allons
TOUT LE TEMPS utiliser.
this permet de préciser au compilateur qu'on travaille sur l'objet qui contient le script.
Bah, ça sert à rien, il suffit de rien mettre !
Souvent, en effet,
this est optionnel. Mais vous verrez par la suite, quand on abordera les évènements, que cette propriété se révèle fort utile, pour préciser au compilateur que malgré que le code soit dans
_root, il s'applique à un autre clip.
Il est en effet possible d'écrire du code dans l'onglet action de
_root qui se rapporte pourtant à un autre clip. Dans ce cas, si on ne met pas
this, la variable appartiendra à
_root, et si on précise
this, la variable appartiendra au clip dont on parle (pour l'instant c'est normal que ça vous paraisse abstrait, nous prendrons des exemples par la suite).
_parent
_parent, renvoie au clip parent.
Et si on reprend l'exemple précédent, en remplaçant le _root.monnombre par this._parent.monnombre, que se passera-t-il ?
Et bien ça fonctionnera !

En effet le clip parent de
_root.monclip c'est la scène principale (
_root).
Vous vous demandez peut-être si _root._parent.monnombre fonctionnerait ? La réponse est : non. En effet, il n'existe pas de niveau "en dessous" de root. _root._parent renvoie donc à un objet qui n'existe pas !
_parent devient donc intéressant en cas d'imbrication d'un clip, dans un clip, dans un clip ...
Et c'est pour éviter d'utiliser cette propriété en spaghetti qu'on met tout le code au même endroit.

En effet, si vous commencez à mettre du code un peu partout dans des clips, vous devrez utiliser _parent plus souvent, et votre code deviendra rapidement incompréhensible, aussi mal "ordonné" qu'un plat de spaghettis.