Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

11fév/090

Flex ActionScript – Convertir une couleur RGB en Hex et vice-versa en AS3

Si vous faîtes des manipulations de couleurs, avec le ColorPicker par exemple, vous aurez parfois besoin de manipuler les valeurs de couleurs de différentes manières. Pour des manipulations complexes, vous pouvez utiliser la classe ColorTransform d'ActionScript 3 qui permet de jouer sur les canaux RGB (multiplication, offset …). Mais pour des manipulations plus simples, vous pouvez utiliser du code AS3 tout simplement.

Dans mon cas, je voulais transformer une valeur type RGB (issue d'un style SVG) en Hexadécimal pour pouvoir mettre cette valeur facilement dans une variable de type uint. Après quelques échecs, j'ai trouvé un article sur la manipulation de couleurs en AS, qui contenait exactement le code qu'il me fallait. En plus, ces fonctions utilisent les opérateurs sur le bit, permettant une rapidité sans égale. Notez, pour ceux qui ne sont pas trop familiers avec l'ActionScript 3, que la fonction hex2rgb retourne un objet ayant 3 propriétés (r, g et b).

Voici donc deux fonctions permettant de transformer une couleur Hexa en RGB et RGB en hexa:

//bitwise conversion of rgb color to a hex value
function rgb2hex(r, g, b):Number {
    return(r<<16 | g<<8 | b);
}
//bitwise conversion of a hex color into rgb values
function hex2rgb (hex):Object{
    var red = hex>>16;
    var greenBlue = hex-(red<<16)
    var green = greenBlue>>8;
    var blue = greenBlue - (green << 8);
  //trace("r: " + red + " g: " + green + " b: " + blue);
    return({r:red, g:green, b:blue});
}

Voir l'article de l'auteur original