Objet Color, hexadécimal et transitions
Un petit code sans prétention, pour choisir une couleur de base, puis une couleur d'arrivée, et faire la transition
merci à calvin pour l'exemple de base, et à kiroukou sur media-box pour le code de transformation d'une couleur hexa en valeurs r, g et b.
// création d'un clip et remplissage en noir // _root.createEmptyMovieClip("essai", 1); essai.lineStyle(1, 0x000000, 100); essai.beginFill(0x000000, 100); essai.moveTo(400, 200); essai.lineTo(300, 200); essai.lineTo(300, 300); essai.lineTo(400, 300); essai.lineTo(400, 200); essai.endFill(); // création de la couleur de base // var myOldColor = 0xFF0000; // affectation de la couleur de base au clip // couleur = new Color(essai); couleur.setRGB(myOldColor); // récupération des valeurs RGB de la couleur // de base à partir de l'hexadécimal // var oldR = (0xFF0000 & myOldColor) >> 16 ; var oldG = (0x00FF00 & myOldColor) >> 8 ; var oldB = (0x0000FF & myOldColor); // récupération des valeurs RGB de la couleur // à appliquer à partir de l'hexadécimal // var myNewColor = 0x990000; var newR = (0xFF0000 & myNewColor) >> 16; var newG = (0x00FF00 & myNewColor) >> 8; var newB = (0x0000FF & myNewColor); // création d'un objet pour la transformation // myCT = new Object(); myCT.ra = 100; myCT.rb = oldR; myCT.ga = 100; myCT.gb = oldG; myCT.ba = 100; myCT.bb = oldB; myCT.aa = 100; myCT.ab = 255; // transition avec un onEnterFrame // this.onEnterFrame = function() { // valeurs finales // var flag1:Boolean, flag2:Boolean, flag3:Boolean; // tests des valeurs RGB // var tab = testValor( myCT.rb, newR, 10 ) myCT.rb = tab[0] flag1 = tab[1]; tab = testValor( myCT.gb, newG, 10 ) myCT.gb = tab[0] flag2 = tab[1]; tab = testValor( myCT.bb, newB, 10 ) myCT.bb = tab[0] flag3 = tab[1]; // application de la couleur // couleur.setTransform(myCT); if (flag1 && flag2 && flag3) delete( this.onEnterFrame ); } function testValor(val, oldVal, crement) { if( val > oldVal) return minus( val, crement, oldVal ); else if (val < oldVal) return plus( val, crement, oldVal ); else return [val, true]; } function minus( val, decrement, min) { var flag = false; if( val > min ) { if (val - min < decrement) val = val - (val - min); else val -= decrement; } else { val = min; flag = true; } return [val, flag]; } function plus(val, increment, max) { if( val < max ) { if (max - val < increment) val = val + (max - val); else val += increment; flag = false } else { val = max; flag = true; } return [val, flag]; }
Salut titouille
Content que ce petit bout de code ait servi. Ce genre d'opérations binaires sont utiles, et le fait d'avoir fais de l'assembleur devient un avantage
BOnne continuation
++
Yep y a un set de classes qui fait ça tt seul pour toi c'est magique, juste un poils bugué sur les actions onRollOver, mais pas eu le temps d'aller voir plus loin
http://laco.wz.cz/tween/