On ne peut pas vraiment dire que la classe que nous allons étudier maintenant permet de dessiner, mais dans la mesure où elle permet d'attribuer une couleur à un clip, on va la ranger ici.
Avant Flash 8, pour colorer un clip, on utilisait ce code :
Code : Actionscript | var macouleur:Color = new Color(monclip); // On associe macouleur à un clip
macouleur.setRGB(0xFF0000); // On donne une couleur héxadécimal à macouleur
|
Et ça suffisait pour changer la couleur du clip, et le colorer en rouge, comme dans l'exemple.
Mais si vous allez faire un tour dans l'aide, vous apprendrez que la classe
color est obsolète !
J'avoue qu'au départ j'étais un peu déstabilisé. Mais puisque je base ce cours sur Flash 8, je vais vous apprendre à colorer correctement un clip avec ActionScript 2 (et bientôt 3).
Pour colorer un clip, il faut utiliser les classes
colortransform et
transform. L'une permet de créer la transformation de la couleur, et l'autre de l'appliquer au clip.
Il faut donc penser à rajouter ces deux lignes
tout en haut de votre code, pour importer ces deux classes :
Code : Actionscript | import flash.geom.ColorTransform;
import flash.geom.Transform;
|
Créer un objet ColorTransform
Pour créer un nouvel objet
ColorTransform, on va utiliser cette syntaxe, commune à toutes les classes :
var macouleur:ColorTransform = new ColorTransform();
Avant de continuer, voici une petite information. Vous savez déjà que les couleurs en informatique sont codées en hexadécimaux. Pour avoir du rouge dans un page Xhtml, vous utiliserez par exemple #FF0000. Le # signifie qu'on utilise le système hexadécimal. Les deux premiers "chiffres" correspondent à la quantité de rouge, les deux seconds à la quantité de vert, et les deux derniers à la quantité de bleu. Le minimum est 00, et le maximum est FF (255 en décimal). Ainsi, le blanc s'écrit #FFFFFF (toutes les couleurs à fond les gamelles), et le noir #000000 (aucune couleur).
Eh bien dans Flash, on peut aussi employer l'écriture hexadécimale des couleurs (mais elle n'est pas obligatoire). Par contre, pour préciser à Flash que le nombre qui suit est en hexadécimaux, il ne faut pas utiliser le
#, mais
0x.
Le bleu s'écrit donc
0x0000FF.
Mini-récapitulatif pour ceux qui découvriraient la notion :
| Couleur | Xhtml & CSS | ActionScript |
|---|
| Rouge |
#FF0000 |
0xFF0000 |
| Vert |
#00FF00 |
0x00FF00 |
| Bleu |
#0000FF |
0x0000FF |
| Jaune |
#FFFF00 |
0xFFFF00 |
Bref, la pipette de Flash dans la barre d'outils vous donne accès à toutes les couleurs possibles et imaginables, et vous donne le code hexadécimal correspondant. Il faudra juste penser à remplacer le
# par
0x, car la pipette de Flash l'affiche avec un
# 
.
Tout ce qu'il faut savoir, c'est que Flash veut des couleurs notées avec
#, et que ActionScript veut des couleurs avec
0x.
Maintenant qu'on a notre couleur, on va utiliser la variable
rgb (rgb = red-Green-blue = rouge - vert - bleu) de la classe ColorTransform pour l'enregistrer, ce qui nous donne :
Code : Actionscript | import flash.geom.ColorTransform;
import flash.geom.Transform;
var macouleur:ColorTransform = new ColorTransform();
macouleur.rgb = 0xFF0000; //Couleur rouge
|
Application de la transformation couleur
Notre transformation est prête.
On a un clip
monclip sur la scène, et on souhaite la lui appliquer !
Il faut déjà associer une transformation au clip :
Code : Actionscript | var transformation:Transform = new Transform(monclip);
|
On a créé avec ce code une transformation appelée, en toute originalité

:
transformation.
On a aussi précisé que cette transformation s'appliquait à
monclip.
Eh bien, il ne reste plus qu'à faire le lien entre la couleur et la transformation, grâce à :
transformation.colorTransform = macouleur;
Ce qui nous donne en récapitulant :
Code : Actionscript | import flash.geom.ColorTransform;
import flash.geom.Transform;
var macouleur:ColorTransform = new ColorTransform();
macouleur.rgb = 0xFF0000;
var transformation:Transform = new Transform(monclip);
transformation.colorTransform = macouleur;
|
C'est drôlement plus long que l'ancienne méthode ! Pourquoi ce changement ?
En fait, il y a une logique là-derrière.
La classe
Transform centralise les transformations qu'on peut effectuer sur un objet. Et la classe
colorTransform possède beaucoup plus de possibilités que l'ancienne classe
color : vous pouvez ainsi appliquer des coefficients sur les différentes composantes de la couleur, et même sur sa transparence.

Allez voir l'aide de Flash pour plus d'informations là-dessus.