Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ProgressBar в форме кольца (http://www.flasher.ru/forum/showthread.php?t=171229)

Ookami 12.11.2011 02:26

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

Добавлено через 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);
                }
        }
 
}



Часовой пояс GMT +4, время: 21:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.