Animation lente a cause d'un effet de texte

Résolu
Hercule_Babeuf Messages postés 11 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 19 octobre 2006 - 18 oct. 2006 à 17:06
Hercule_Babeuf Messages postés 11 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 19 octobre 2006 - 19 oct. 2006 à 11:31
Bonjour,

J'ai codé une fonction permettant d'afficher un texte  en y appliquant des effets puis de l'animer (effet de vague)
La fonction prend en entrée la chaine de caractères a travailler et une variable indiquant si oui ou non le texte doit etre animé :

function afficheTexte(string, anim) {

 // Définition du format
 format = new TextFormat();
format.font = "soop";
 format.align = "center";
 format.size = 40;
 format.color = "0x0099FF";

// Les effets que j'applique
 var Glow:GlowFilter = new flash.filters.GlowFilter(0x000000, 100, 2, 2, 2, 2, false, false);
 var Gradient:GradientGlowFilter = new flash.filters.GradientGlowFilter(3, 90, [16777161, 12583104], [0, 100], [0, 255], 10, 10, 0.8, 1, "inner", false);
 var TabFiltres:Array = new Array();
 TabFiltres.push(Glow);
 TabFiltres.push(Gradient);

 
 // Affichage lettre par lettre
 taille = string.length;
 for (i=0; i<taille; ++i) {
  char = string.substr(i, 1);
  var cliptexte = _root.createEmptyMovieClip("lettre"+i, i);
  var ligne = cliptexte.createTextField("texte", 0, 250-(25*taille/2), 130, format.size*(1.500000E+000+i), format.size*(1.500000E+000+i));
  ligne.selectable = false;
  ligne.text = char;
  ligne.embedFonts = true;
  ligne.setTextFormat(format);

 // Mise en place des effets 
  ligne.filters = TabFiltres;

  if (anim == 1) {

   // Animation des lettres
   _root["lettre"+i].onEnterFrame = function() {
    for (k=0; k<taille; k++) {
     pos = _root["lettre"+k]._y;
     _root["lettre"+k]._y = pos+Math.sin(j*3.14)*40;
     j = j+1/10;
    }
   };
  }
 }
}


Alors voila j ai deux problèmes :
Le premier fois que j'appelle cette fonction, tout fonctionne normallement. Les effets sont appliqués et le texte ondule.Mais la deuxième fois que je fais appelle à cette fonction : le texte n'ondule pas et la ligne " ligne.filters = TabFiltres;" ralenti considérablement l'animation.

Si quelqu'un sait comment réparer cela, je suis preneur !

2 réponses

Hercule_Babeuf Messages postés 11 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 19 octobre 2006
19 oct. 2006 à 11:31
En fait le problème venait de l'appel de cette fonction que je faisais dans un onEnterFrame . J'avais donc une sorte d'imbrication de onEnterFrame qui faisait tout ramer.

Je m'y suis pris autrement et ca roule.

Merci pour ta réponse !
3
titi035 Messages postés 173 Date d'inscription vendredi 13 janvier 2006 Statut Membre Dernière intervention 10 mai 2010
18 oct. 2006 à 21:49
Est ce que tu utilises la transparence? Par ce que j'ai déjà eu des problèmes de lenteur du swf à cause de ça..
0
Rejoignez-nous