Вопрос по Flex компоненту, но в основном касается as3 геометрии, поэтому считаю здесь более правильный раздел.
Вот это RichText компонент, который позволяет размещать текст вдоль окружности (по ссылке и сорсы есть). Главная проблема в том, что изменяя радиус, сам текст тоже перемещается (попробуйте, менять первый слайдер), а нужно чтобы он выгибался оставаясь на одном и том же месте. За положение текста отвечает этот код:

Код AS3:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth,unscaledHeight);
var angle:Number = startAngle*Math.PI/180 + startOffset/radius;
graphics.clear();
var line:TextLine, atomBounds:Rectangle;
var letterW:Number, letterH:Number, arcAngle:Number;
var dx:Number, dy:Number, ddx:Number, ddy:Number;
for (var i:int = 0; i < mx_internal::textLines.length; i++) {
line = mx_internal::textLines[i] as TextLine;
atomBounds = line.getAtomBounds(0);
letterW = atomBounds.width;
letterH = atomBounds.height;
arcAngle = letterW/radius;
angle+= arcAngle/2;
dx = Math.cos(angle) * radius;
dy = Math.sin(angle) * radius;
ddx = Math.sin(angle)*letterW/2;
ddy = Math.cos(angle)*letterW/2;
line.x = dx+ddx;
line.y = dy-ddy;
line.rotation = (Math.PI/2+angle)*180/Math.PI;
angle+= arcAngle/2;
}
}
Очевидно, что меняя радиус окружности нужно как-то изменять line.x и line.y так чтобы первая буква текста оставалась на месте. Но как, не ясно.
Вторая проблема, это переход от положительного радиуса к отрицательному. То есть текст должен уметь выгибаться из горизонтального положения как вверх, так и вниз. Делаем слайдер в котором движок посредине (minimum="-20" maximum="20" value="0" stepSize="1"). Теперь нужно как-то смещать центр радиуса окружности вокруг которой строится текст в зависимости от значений слайдера. По коду эта окружность никак не объявляется.
Ну и получается, что для горизонтального текста (value слайдера = 0) радиус должен быть бесконечно большим. Как это реализовать тоже без понятия. Сейчас при нуле все буквы текста собираются в одну точку.
Слайдер двигается дискретно, поэтому нужно как-то изменить условия, чтобы просто убрать размещение вдоль окружности при value="0", а при value="1" или value="-1" уже менять центр радиуса окружности на какое-то большое значение (текст слегка искривлен).
Извиняюсь за сумбурность, сложно все это пояснить, но, надеюсь, понять меня можно.