Modifier la teinte en AS3

cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011 - 28 juin 2009 à 09:04
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 29 juin 2009 à 19:58
Bonjours à tous,

J'ai un petit problème, je travail sur flash CS3 et en AS3. je ne trouve pas la fonction qui peu me permettre de modifier "la teinte" d'un objet en AS3. alors j'insiste sur la teinte car ce n'est pas une modification en RGB que je cherche mais bien de teinte comme on peut le faire depuis le filtre - régler la couleur. Je sais que en AS2 on le faisait grâce à la propriété filter.hue.

Je vous remercie d'avance

26 réponses

on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
28 juin 2009 à 17:54
Salut,

Ben à part à l'aide de la classe ColorMatrixFilter , je vois pas ... ou alors pour certains composants Flash  dans ce cas je crois que tu peux utiliser Color.setTeint() ...

@+.
0
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
28 juin 2009 à 17:55
oupss...  c'est : Color.setTint()

@+.
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 18:00
malheureusement ces deux solutions font appel à un code RGB et disons ça me modifie également mes teinte en noir.
Hors lors d'une modification de teinte via "régler la couleur", le noir garde sa teinte.
je reste bloqué
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 18:01
j'avais compris merci ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 18:27
et avec la classe ColorTransform ?

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 18:31
j'ai également essayé mais ColorTransform modifie les canaux des couleurs RGB
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 19:30
Alors je ne vois pas, car modifier une couleur sans modifier son RGB n'est, à mon avis, pas possible.

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 19:34
pourtant en AS2 filter.hue permet de modifier la couleur grâce à une valeur comprise en 180 et -180 comme le propose le filtre régler la couleur et impossible de le trouver en AS3 ou alors je m'y prend mal.
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 19:44
c'est un simple décalage du spectre de couleur, alors ...

Il n'existe pas de mémoire de truc semblable en as3, mais avec un peu de recherche, tu pourras trouver des liens utiles, tels que : http://www.kirupa.com/forum/showthread.php?t=230706

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 19:52
Oui le lien je l'avait déjà trouver mais il modifie également les valeurs RGB et comme tu peu le voir pas forcement de la façon la plus simple. De plus si ce code est utiliser pour 2 occurences sur la scène l'animation est ralenti.

Sinon que veut tu dire par décalage du spectre de couleur? comment je m'y prend?

Merci pour votre attention
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 19:57
Tu ne peux pas "t'y prendre" mais le spectre de couleurs est définis sur 360°, allant du rouge au rouge ...
Si tu fais un peu de photoshop, tu verras lors des remplacements de couleurs.

Cependant, n'ayant jamais eut besoin d'utiliser cette fonction en AS2, je ne saurais t'aider en as3. Mais beaucoup de fonctions as2 ont été supprimées par d'autres car il y avait redondances ou moyen plus efficace de le faire.

Certaines autres ont été tout simplement supprimées.

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 20:11
Graphiste je connait très bien les spectres de couleurs et si je ne me trompe il existe plusieur sorte de spectre RVB, CMJN, et TSL
c'est ce dernier qui m' intéresse étant donné que le T correspond à la teinte

Je pensais que tu avait peu être une solution à mon problème avec cette histoire de spectre enfin tant pis si personne n'a de solution je passerait à flash CS4 qui lui le permet.

mais c'est la loose.

merci quand même
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 20:30
et il le permet à quel niveau ?

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 20:42
Ci-joint la page de l'aide adobe qui parle de modification de teinte apparemment ( peu être je ne sais pas l'utiliser )
malheureusement ma recherche date de vendredi et je ne trouve plus la page qui parlait de la possibilité de le faire grâce à FlashPlayer 10

http://help.adobe.com/fr_FR/ActionScript/3.0_ProgrammingAS3/WS17ABB626-168E-4f6a-980B-A85F0259427C.html

Voilà merci d'avance si tu trouve la possibilité de le faire avec la CS3
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 20:59
Dans l'exemple que tu nous as indiqué, il s'agit de la classe fl.motion et non d'une simple transformation de couleur sur un élément graphique.
Si tu lis bien le code et que tu reprend le chapitre traité depuis le début, tu verras que c'est dans un cas super précis.

Donc CS4 ne peut pas faire ce que tu demandes simplement ...

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 21:47
je sais que le site donné ne donne pas forcement ce que je voulait te montrer mais je t assure que il existe une fonction disponible avec le flashplayer10 pour modifier la teinte qui n'est pas sur le flashplayer9.

Malheureusement je n'ai pas le temps de rechercher cette page mais dans les deux jours je te retrouve ce lien. Promis.

Sinon ayant posté sur un autre forum on m'a donné une solution qui me plait bien et que je vais pouvoir réutiliser
je cite starmonkey_811 de flash.mediabox.fr :

"salut

le truc pour le faire en code serait d'utiliser ColorMatrixFilter, c'est le filtre que flash applique pour régler la couleur.
par contre pour le configurer ce n'est pas forcément intuitif
si
la teinte n'est pas trop amenée à changer tu peux aller dans flash,
appliquer le filtre à un clip et dans le code faire un
trace(monClip.filters[0].matrix); ce qui indiquera les réglages à
utiliser

si tu veux faire quelquechose de plus dynamique une petite recherche sur google à propos de ce filtre te donnera pas mal d'infos
sinon
la classe ColorTransform peut être pas mal et plus simple. Dans flash
si tu changes la couleur d'un clip dans ses propriétés (sans passer par
les filtres) et tu pourras voir les valeurs des paramètres dans
"avancés""

Voilà le trace me donne les réglages pour avoir parfaitement ce que je souhaite.

Je te retrouve le lien pour le player 10 dans les jours qui arrive

Bonne soirée
http://flash.mediabox.fr/index.php?showuser=10148
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
28 juin 2009 à 21:51
ColorMatrixFilter à été la première solution donnée par On_drag_on, solution que tu as écarté de suite ...

Peg'
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
28 juin 2009 à 22:31
Non c'est le trace qui m'interesse
car il me donne les valeurs exact que je n'ai plus que à reporter en RGB ce qui me donne l'équivalent de la teinte enfin je ne sais pas si je suis très clair.

Mais fait un test avec un filtre sur un Clip  et le trace y te donne des valeur que je n'ai plus qu'à reporter grâce à MotionBase par exemple qui utilise des valeurs similaires
0
on_drag_on Messages postés 1236 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 6 octobre 2010
28 juin 2009 à 23:30
Lol ... non mais bon ... le trace() est une instruction qui te permet de vérifier le fonctionnement de ton code et le cas échéant te retourner le valeurs associées dans le panneau de sortie ... des trace() tu peux en placer tout le long de ton code si tu veux .... ça change pas le fait que si tu veux jouer sur la teinte la meilleure méthode en AS3 et d'utiliser la classe ColorMatrixFilter comme te propose la réponse que tu nous cites ...
On tourne un peu en rond là .

@+.
0
cyan59 Messages postés 44 Date d'inscription mardi 19 décembre 2000 Statut Membre Dernière intervention 28 mai 2011
29 juin 2009 à 13:16
La meilleure méthode pour teinter un clip en AS3 avec une CS3 est effectivement ColorMatrixFilter. Cependant, quelque chose me choque, c'est que les librairies de base dans la CS3 sont moins fournies que celles de la CS4, et pas seulement en ce qui concerne les classes permettant de faire de la 3D.

Par exemple, si vous consultez la documentation fournie dans la CS3 pour la classe Motion, on voit que celle-ci hérite directement de Object, l'élément de plus haut niveau. Alors que la documentation en ligne (celle de la CS4, donc), nous indique que Motion hérite d'abord de MotionBase et que cette dernière hérite de Object. S'ajoutent alors un certain nombre de fonctionnalités et de méthodes, notamment une méthode initFilters() permettant de faire appel à tous les filtres disponibles dans l'interface, ce qui n'était pas possible dans la CS3.

De même, une nouvelle classe fait son apparition dans la CS4, il s'agit de la classe AjustColor, qui permet d'effectuer une teinte sur un élément directement en utilisant la propriété hue, modifiable grâce à un setter (cf. doc : http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/fl/motion/AdjustColor.html#hue).

Si vous faites bien attention, la documentation mentionne : Versions du moteur d'exécution: AIR 1.0 Flash Player 9. Alors que l'URL du lien mentionne "Flash_10.0". Savez-vous s'il est possible d'importer les nouveaux packages, ou tout du moins les nouvelles classes proposées par la CS4 (player 10) dans une CS3 (player 9) ?

J'en profite pour faire une petite parenthèse, certes un peu hors-sujet par rapport au topic, mais pour revenir sur l'histoire des getter et des setter. Pour ne pas trop s'éloigner du sujet, si je prends comme exemples la classe AdjustColor, on peut voir qu'afin d'accéder à son attribut hue il faut s'y prendre comme cela:

Implémentation
    public function set hue(value:Number):void

On utilise ici une forme bien spéciale, qui ne sera pas inconnue aux utilisateurs de Visual Basic, mais la question que je me pose est comment s'utilise t'elle dans Flash ? Par exemple, si je fais une classe, comment puis-je créer des getter et setter pour mes attributs comme c'est fait dans l'exemple ci-dessus ? Est-ce que cette notation existait déjà dans la CS3 ? Car je n'en avais pas connaissance jusqu'à présent.

Merci d'avance pour toutes vos réponses .
0
Rejoignez-nous