Да, метод как-раз то что надо, плюс основа из предыдущего поста ) Спасибо
Добавлено через 11 часов 30 минут
Итак, вот что получилось:

Код AS3:
package progressBars
{
import flash.display.Shape;
import flash.geom.Point;
import flash.text.TextField;
public class ProgressBarCircle extends Sprite
{
private const ANGLE_OFFSET:Number = -90;
private var radius:Number;
private var thickness:Number;
private var progressBar:Shape = new Shape;
private var progressText:TextField = new TextField;
private var point:Point;
public function ProgressBarCircle(barRadius:Number = 100, barThickness:Number = 10)
{
// Инициализация
radius = barRadius;
thickness = barThickness;
point = new Point(radius * Math.cos(radians(ANGLE_OFFSET)), radius * Math.sin(radians(ANGLE_OFFSET)));
// Описание этапа загрузки
progressText.x = radius + thickness / 2 + 20;
progressText.y = 0;
// Формирование МС
progressBar.x = radius + thickness / 2;
progressBar.y = radius + thickness / 2;
addChild(progressBar);
addChild(progressText);
update();
}
public function update(percent:Number = 0):void
{
// Обновим надпись с процентами
progressText.text = int(100 * percent) + " %";
// Расчитаем текущий угол дуги
var angle = ANGLE_OFFSET + 360 * percent;
draw_arc(progressBar, angle);
}
private function draw_arc(shape:Shape, angle_to:Number):void
{
shape.graphics.lineStyle(thickness);
var angle_diff = angle_to - ANGLE_OFFSET;
shape.graphics.moveTo(point.x, point.y);
shape.graphics.lineTo(radius * Math.cos(radians(angle_to)), radius * Math.sin(radians(angle_to)));
point.x = radius * Math.cos(radians(angle_to));
point.y = radius * Math.sin(radians(angle_to));
}
private function radians(degrees:Number):Number
{
return degrees * (Math.PI / 180);
}
}
}