Hello à tous!
J'ai une petite colle à vous poser!
Je vous explique, en gros, à quoi sert le code ci-dessous. Il me permet de coloriser des textField contenus dans des clips créés dynamiquements. Chaque texfield contient une et une seule lettre. Ces clips contenant une lettre, mis côte à côte, créent un texte. Ces clips apparaissent successivement, les uns après les autres. Mon but est de coloriser certains mots de ce texte lorsque leur apparition est complète (lorsque le mot est détecté comme étant entier).
Ce n'est pas grave si vous ne comprenez pas comment fonctionne exactement mon code et à quoi se rapportent certaines variables car ce dont j'ai besoin, c'est plutôt d'une aide pour simplifier son écriture. Voici le code, je vous explique ensuite l'aide dont j'ai besoin.
ActionScript:
chainToBeColor = "bonjour"; onEnterFrame = function(){ if (substring(chainToBeColor, m, 1) == animTexte1_mc.lettreActuelle) { if (m<=nbrLettersToBeColor) { m++; this["letter"+m] = true; } else { m = 1; for (n=1; n<=nbrLettersToBeColor; n++) { this["letter"+n] = false; } } } else { m = 1; for (n=1; n<=nbrLettersToBeColor; n++) { this["letter"+n] = false; } } if (this["letter"+nbrLettersToBeColor]) { p = animTexte1_mc.i-1; q = animTexte1_mc.i-nbrLettersToBeColor-1; while (p>q) { p--; animTexte1_mc["lettre"+p].contenerLettre_mc.lettre_txt.textColor = 0x00FF00; } } } Voilà, j'ai une chaîne de caractères contenue dans la variable chainToBeColor. Cette chaîne correspond au mot à coloriser dans mon texte.
Donc, pour le moment, mon code me permet de coloriser tous les mots du texte qui correspondent au contenu de chainToBeColor. Exemple: si chainToBecolor = "bonjour", tous les mots "bonjour" seront colorisés dans mon texte.
Ce que j'aimerais faire, c'est pouvoir coloriser plusieurs mots différents dans mon texte. Exemple: si chainToBeColor1 = "bonjour" et chainToBeColor2 = "bienvenue" alors tous les mots "bonjour" et tous les mots "bienvenue" seront colorisés dans mon texte.
Le problème est d'appliquer mon code aux différentes chaînes de caractères contenues dans chainToBeColor. Si je voulais faire ça de manière bien balourde, il me suffirait de copier plusieurs fois mon code, un code par chaîne à coloriser mais pour peu que j'aie beaucoup de chaînes à coloriser, je risque de me retrouver avec des lignes de code interminables.
Il faut tenir compte des variables m, n, p, q, nbrLettersToBeColor,... qui interviennent dans mon code. Leur valeur est fonction du contenu de chainToBecolor et évolue au fil des boucles. Si ces variables sont utilisées dans le code appliqué à chainToBeColor1, elles ne peuvent être réutilisées dans le code appliqué à chainToBeColor2 à moins de les remettre à leur valeur initiale entre la lecture des deux codes, ce qui n'est pas possible à cause du mode de fonctionnement du code qui utilise les boucles pour faire évoluer la valeur de ces variables.
Voilà donc pourquoi je cherche une méthode d'écriture qui me permettrait de n'écrire qu'un seul code pour toutes les chaînes de caractères (ou mot dans le texte) que je pourrais vouloir coloriser, un code dans le genre de ceci:
ActionScript:
chainToBeColor1 = "bonjour"; chainToBeColor2 = "coucou"; chainToBeColor3 = "aurevoir"; for(r=1;r>=3;r==){ if (substring(this["chainToBeColor"+r], this["m"+r], 1) == animTexte1_mc.lettreActuelle) { if (this["m"+r]<=this["nbrLettersToBeColor"+r]) { this["m"+r]++; this["letter"+this["m"+r]] = true; } else { ...... Mais ce que j'écris ci-dessus me semble mauvais, notamment au niveau de la syntaxe à certains endroits. D'ailleurs ça ne fonctionne pas.
Comme expliqué plus haut, la difficulté d'une écriture simplifiée réside dans les variables m, n, p, q, nbrLettersToBeColor,... contenues dans le code. Dans l'exemple ci-dessus, j'ai fais en sorte de modifier le nom des variables en fonction de la chaîne de caractère qui est traîtée. Comme ça, chaque chaîne de caractère possède ses propres variables (noms des variables) et donc, les valeurs dans les variables sont propres à la chaîne de caractère en cours de traitement. Mais reste à parvenir à cette simplification d'écriture.
Donc voilà! Dur dur, les explications, j'espère que vous comprendrez. Tout ce que vous avez à retenir, c'est que je cherche à déclarer mon code simultanément pour des chaînes de caractère différentes contenues dans chainToBeColor. Voilà, ça résume tout, je crois!
Merci si vous avez des idées à me proposer!
