J'essaie de faire une animation flash en actioscript.
Mon projet final est de faire des lettres individuelles qui forment une boule sur le stage. Lorsque je clique sur la boule, les lettres explosent et se déposent partout sur le stage. Puis, lorsque je bouge la souris, elles viennent se regrouper et suivre la souris.
Je le fais avec de l'actionscript parce que je veux pouvoir changer le texte facilement. (au lieu de faire un movie clip pour chaque lettre et animer chaque lettre)
J'ai trouvé le code pour que le texte suive le curseur. Et ce code fait en sorte que chaque lettre est dans son propre textfield = elles ont leur propres coordonnées x et y.
Pour le moment, mon problème est que je veux que le texte qui suit la souris apparaisse sur 3 lignes différentes. Comme elles sont dans leur propre textfield, je ne peux pas utiliser la fonction multiline. Alors, j'ai pensé utiliser les coordonnées en y pour faire le changement de ligne manuellement et les coordonnées en x pour l'alignment en début de ligne.
Le seul ennui, c'est que ma deuxième ligne apparaît avec un écart. C'est à dire qu'au lieu d'obtenir du texte comme suit:
texte de la ligne 1
texte de la ligne 2
texte de la ligne 3J'obtiens:
texte de la ligne 1
texte de la ligne 2
texte de la ligne 3Pourtant, lorsque je trace les coordonnées en x de mes lettres, j'obtiens vraiment (0,20) pour la première lettre de la 2eme ligne...
Quelqu'un peu m'aider?
Voici mon code:
Text = "dart442 - 2007 - 08 * scenarios for typography * Gutenburg vs Machintosh";
letterformat = new TextFormat();
letterformat.font = "Verdana";
letterformat.align = "center";
letterformat.size = "10";
spacing = 2;
speed = 1;
yHeight = 1;
xWidth = 0;
//create a movie clip for each letter
for(i=0; i<Text.length; i++){
mc = _root.createEmptyMovieClip(i+"l", i); // create an empty movie clip container
mc.createTextField("letterField"+i, i, xWidth*spacing, yHeight * 20, 20, 20);// create a textfield in the empty mc
trace("xWidth" + xWidth*spacing);
with (mc["letterField"+i]) {
if(Text.charAt(i) == '*'){
trace("*");
yHeight++;
xWidth = 0; //reset the x coordinates
}
else{
text = Text.charAt(i);
xWidth++;
}
setTextFormat(letterformat);
selectable = false;
}
if (i) {
mc.prevClip = _root[(i-1)+"l"];
mc.onEnterFrame = function() {
this._x += (this.prevClip._x-this._x+5)/speed;
this._y += (this.prevClip._y-this._y)/speed;
}
}
else {
mc.onEnterFrame = function() {
this._x += (_root._xmouse-this._x+10)/speed;
this._y += (_root._ymouse-this._y)/speed;
}
}
}