Aller au contenu


jsfl dégradé linéaire pour le contour ✔

jsfl stroke couleur du trait gradient

10 réponses à ce sujet

#1 matgap59

    Ceinture Verte

  • Members
  • 70 messages

Posté 31 janvier 2012 - 08:49

Bonjour à tous !
Je suis en train de créer une commande qui permettra de changer le style de remplissage, et de contour de la forme sélectionnée par un dégradé linéaire, qui démarre de la couleur d'origine avec un alpha à 100% et se termine avec la même couleur avec un alpha à 0%.
Exemple : J'ai un carré orange, avec contour rouge. Avec la commande, le remplissage du carré devient dégradé linéaire orange avec l'alpha de 100% à 0%, et le conour rouge devient dégradé linéaire rouge avec l'alpha de 100% à 0%.

Mon problème c'est que pour le contour, il prend en compte la couleur du remplissage et pas celle du contour.

Auriez-vous un conseil à donner?
Merci d'avance!
Voici le code :

var doc=fl.getDocumentDOM();
var myFill = doc.getCustomFill();
var myStroke = doc.getCustomStroke();
myFill.style = "linearGradient";
myStroke.shapeFill = myFill;
var myFillColorStart = "'"+myFill.color+"'";
var myFillColorEnd = "'"+myFill.color+"00'";
var myStrokeColorStart = "'"+myStroke.color+"'";
var myStrokeColorEnd = "'"+myStroke.color+"00'";
myFill.colorArray = [ myFillColorStart, myFillColorEnd  ];
myFill.posArray  = [0, 255];
myStroke.colorArray = [ myStrokeColorStart, myStrokeColorEnd  ];
myStroke.posArray  = [0, 255];
fl.trace(myStroke.color);
doc.setCustomStroke( myStroke );
doc.setCustomFill( myFill );
 


#2 Nataly

  • Moderateur
  • 4 641 messages

Posté 31 janvier 2012 - 11:47

salut :)

suis pas assez au point de JS pour prendre le risque de t'expliquer (comment on type les variables déjà ? c'est facultatif c'est ça ? rien que ça, ça me perturbe)

Voilà ma patouille pour obtenir le résultat que tu cherches, à la matrice près (pour orienter le dégradé sur l'axe vertical), tu trouveras ? Si non je chercherai à l'occaz ;)

C'est pas super commenté, mais écrit en français,ce qui devrait revenir au même ;)



var selection_c = fl.getDocumentDOM();
// le fond, les données
var remplissageFond = selection_c.getCustomFill();  
var coulFond = selection_c.getCustomFill().color;
var coulFondAlpha = coulFond.toString() + "00";
//le filet, les données
var leFilet = selection_c.getCustomStroke();
var remplissageFilet = leFilet.shapeFill;
var coulFilet = remplissageFilet.color;
var coulFiletAlpha = coulFilet.toString() + "00";

//remplir filet
remplissageFilet.style = "linearGradient";
remplissageFilet.colorArray = [coulFilet,coulFiletAlpha];
remplissageFilet.posArray = [0,100];
selection_c.setCustomStroke(leFilet);
//remplir fond
remplissageFond.style = "linearGradient";
remplissageFond.colorArray = [coulFond,coulFondAlpha];
remplissageFond.posArray = [0,100];
selection_c.setCustomFill(remplissageFond);



 

++ :)


[edit]

Allô Lilive ?

Je reviens du tuto Matrice… en me disant qu'à défaut de comprendre avant, je pouvais tj essayer de trafiquer et comprendre après (par déduction)

j'ai ajouté ça (avant d'appliquer via selection_c.setCustomStroke(leFilet))

var m = remplissageFilet.matrix;
fl.trace(m.a)
fl.trace(m.b )
fl.trace(m.c)
fl.trace(m.d)

m.a=0
m.b=-1
m.c=1
m.d=0
fl.trace(m.a)
fl.trace(m.b )
fl.trace(m.c)
fl.trace(m.d)

seule chose de certaine : la matrice est modifée,
mais… correctement ?J'en sais rien vu que rien ne se passe.
Et comme je ne suis sûre de rien sur ce code, j'en déduis pas grand chose :(
Le savoir est le seul bien qui s'accroit quand on le partage

#3 matgap59

    Ceinture Verte

  • Members
  • 70 messages

Posté 31 janvier 2012 - 02:29

Merci beaucoup ! J'ai compris mon erreur !
La seule petite erreur dans ton code est sur les "posArray = [0,100];"
En effet, ça s'exprime sur les valeurs de 0 à 255, donc pour mettre le fondu à la fin il faut mettre [0,255].
Voilà! Et merci beaucoup pour ton aide !

#4 Nataly

  • Moderateur
  • 4 641 messages

Posté 31 janvier 2012 - 02:45

Citation

ça s'exprime sur les valeurs de 0 à 255, donc pour mettre le fondu à la fin il faut mettre [0,255].
[mode 'quand même, on a son amour propre'] je sais bien, c'est un reste d'autres tests :P [\mode]


En revanche si tu as résolu la rotation du remplissage… ça je sais pas ! ;)
Le savoir est le seul bien qui s'accroit quand on le partage

#5 lilive

  • Moderateur
  • 3 053 messages

Posté 31 janvier 2012 - 03:12

Nataly, le 31 janvier 2012 - 11:47 , dit :

Allô Lilive ?
seule chose de certaine : la matrice est modifée,
mais… correctement ?J'en sais rien vu que rien ne se passe.
Et comme je ne suis sûre de rien sur ce code, j'en déduis pas grand chose :(

Salut,

Je n'y entends rien à votre discussion, mais je peux dire une chose: peut-être que ça marche comme les matrices des DisplayObjects, cad que pour la modifier il faut la re-affecter:

var m:Matrix = unClip.transform.matrix;
m.a = 0.3; // Rien ne se passe
unClip.transform.matrix = m; // là ça marche
 
C'est une pure hypothèse, bien sûr.

#6 Nataly

  • Moderateur
  • 4 641 messages

Posté 31 janvier 2012 - 03:31

en vrai c'est la rotation que je voulais obtenir, sachant qu'il n'y a pas de méthode qui le fait, il faut se débrouiller avec les a,b,c… :?

… et tu as bien fait d'hypothèser… ensuite il faudra bien l'appliquer c'te fichue matrice… Bon, chaque chose en son temps
Le savoir est le seul bien qui s'accroit quand on le partage

#7 lilive

  • Moderateur
  • 3 053 messages

Posté 31 janvier 2012 - 07:42

Nataly, le 31 janvier 2012 - 03:31 , dit :

en vrai c'est la rotation que je voulais obtenir, sachant qu'il n'y a pas de méthode qui le fait, il faut se débrouiller avec les a,b,c… :?
Pour une rotation d'alpha il faut faire, sauf erreur de ma part:
a = cos(alpha)
b = sin(alpha)
c = -sin(alpha)
d = cos(alpha)
Ce que tu peux déduire de l'animation de ce chapitre: http://ressources.me...ion_d_une_image

Mais on peut pas faire m.rotate(alpha) en jsfl? (si c'est bien de jsfl qu'il est question, j'ai pas tout lu de la discussion ;) )

#8 Nataly

  • Moderateur
  • 4 641 messages

Posté 01 février 2012 - 08:39

lilive, le 31 janvier 2012 - 07:42 , dit :

Ce que tu peux déduire de l'animation de ce chapitre: http://ressources.me...ion_d_une_image

Ui… Je sais bien, et j'ai essayé (pô longtemps), puis j'ai fait ma flemmarde (autrement il fallait que je me reprenne l'interface : les sliders pas pratique pour "viser" une valeur bien précise) en me disant que tu devais le savoir par cœur et que j'allais me gagner quelques heures de labeur intellectuel :oops:


Citation


Mais on peut pas faire m.rotate(alpha) en jsfl? (si c'est bien de jsfl qu'il est question, j'ai pas tout lu de la discussion ;) )

Pense bien que non. Ce serait trop facile ;)
jsfl est tout à fait spartiate, au moins t'es pas emm…é avec une doc trop épaisse (quant aux exemples de code je suis sûre que c'est de l'ordre du un sur trois qui ne tourne pas, pour cause de coquille)


merci bcp en tous cas :Hola:
Le savoir est le seul bien qui s'accroit quand on le partage

#9 lilive

  • Moderateur
  • 3 053 messages

Posté 01 février 2012 - 09:42

Nataly, le 01 février 2012 - 08:39 , dit :

Ui… Je sais bien, et j'ai essayé (pô longtemps), puis j'ai fait ma flemmarde (autrement il fallait que je me reprenne l'interface : les sliders pas pratique pour "viser" une valeur bien précise) en me disant que tu devais le savoir par cœur et que j'allais me gagner quelques heures de labeur intellectuel :oops:

Pour ta culture, comme tu dirais ;)



#10 Nataly

  • Moderateur
  • 4 641 messages

Posté 01 février 2012 - 10:43

:Hola: :Hola:

C'est là que la vidéo prend tout son sens !!

Banaba n'avait pas eu l'idée de trafiquer les point roses et de regarder ce que ça donnait :oops:
Trois pierres d'un coup : soluce à mon interrogation spécifique ET comment utiliser l'appli à empirisme (qui est quand même géniale pour se représenter les choses :Hola: ).

Et… un coup de projecteur sur ce tuto vachement bien foutu et super utile pour qui n'est pas à l'aise avec les matrices.

merci !! :)
Le savoir est le seul bien qui s'accroit quand on le partage

#11 matgap59

    Ceinture Verte

  • Members
  • 70 messages

Posté 02 février 2012 - 02:06

Olala !!! La discussion est partie loin :)
Donc la commande fonctionne très bien, sauf que maintenant je voudrais gérer le fait qu'il y ait (ou non) un trait de contour, ou qu'il y ait (ou non) une couleur de fond. Car là, si on applique la commande à une forme sans contour, une fenêtre d'erreur s'ouvre.
Et je ne trouve donc pas la solution. Pouvez-vous m'aider ?



C'est bon! J'ai trouvé ! Grâce à
if (theStroke.shapeFill == null)
pour le trait
ou encore
if (myFill.color == null)
pour le fond

ça fonctionne...je sais pas si y'a mieux, mais le résultat est là donc ça me va!





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS - Tel. 0826 466 613 - Fax. 01 72 70 31 38

FFP