'Flash et trigo: mettre des lettres sur un arc de cercle.'
Comment avais je pu oublier ce plaisir, la trigo, ses tangentes, arc sin et autres jouyeusetés du même acabit. Comme je ne suis plus de la toute première fraicheur, ces petites choses étaient enfouies très profondément dans mon cerveau.
Si profondément qu'elles ne sont pas ressorties. Il a fallu que j'aille consulter toute une série de sites hyper rébarbatifs avant de trouver mon bonheur, enfin presque. Un truc, quand je l'ai lu, j'ai dit 'mais bien sûr', mais j'avais dessiné 6 arcs de cercle raturés sur mon cahier avant...
Bref, l'histoire, c'est que je voulais taper des lettres sur un arc de cercle. Comme il n'est malheureusement pas possible de coller sur un tracé comme dans fireworks (par exemple) les caractères, on est obligé de placer soi même les lettres une à une.
Voici l'état actuel de ce que cela donne:
var aTexte = "Gregorio Rastapopoulos";
var aOrigin = -Math.PI/2;
var aRadius = 100;
var letterCount = 14;
var xCenter = 192;
var yCenter = 200;
var angle=aOrigin;
for (var i=0;i<aTexte.length;i++){
var mc = _root.attachMovie('letter_mc', 'let'+i, 1+i);
mc.letter.text = aTexte.substr(i,1);
mc.letter.autoSize = true;
distance = mc.letter._width;
if (mc.letter.text==" ") distance=distance*2;
mc.letter._rotation = (180*(angle-aOrigin)/Math.PI);
mc._x = xCenter + Math.cos(angle)*(aRadius+22);
mc._y = yCenter + Math.sin(angle)*(aRadius+22);
angle += 2*Math.asin((distance/2)/aRadius);
}
Le résultat n'est pas parfait à cause de la nature approximative des nombres dans Flash. J'ai un petit décalage. Mais cela reste raisonnable. J'ai juste du doubler la taille de l'espace car l'espace qu'il occupe par défaut était insuffisant.
PS: letter_mc est un movieclip qui va bien avec une zone de texte éditable avec les fontes embeddées.