Le principe est assez simple, les couleurs sont passées sous forme de nombre (en hexa pour plus de lisibilité).Elles sont d’abord enregistrées dans la propriété d’objets ColorTransform pour pouvoir récupérer leurs composantes RVB, on calcule ensuite la différence entre les composantes des deux couleurs. Cette différence est multipliée par le ratio donné en paramètre (un nombre entre 0 et 1) et le tout est recompilé à la fin pour être renvoyé
Voici le code de ladite fonction
import flash.geom.ColorTransform;
function degrade(d:Number, f:Number, t:Number):Number {
var cD:ColorTransform = new ColorTransform();
var cF:ColorTransform = new ColorTransform();
cD.rgb = d;
cF.rgb = f;
var dR:Number = cF.redOffset-cD.redOffset;
var dV:Number = cF.greenOffset-cD.greenOffset;
var dB:Number = cF.blueOffset-cD.blueOffset;
return 255 << 24 | (cD.redOffset+dR*t) << 16 | (cD.greenOffset+dV*t) << 8 | (cD.blueOffset+dB*t);
}
Et voici un exemple d’utilisation:
(on ne critiquera pas l’aspect visuel, merci :p)