Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.11.2011, 02:26
Ookami вне форума Посмотреть профиль Отправить личное сообщение для Ookami Найти все сообщения от Ookami
  № 11  
Ответить с цитированием
Ookami
 
Аватар для Ookami

Регистрация: Aug 2011
Адрес: 56° 51' с.ш. 53° 13' в.д.
Сообщений: 172
Записей в блоге: 1
Да, метод как-раз то что надо, плюс основа из предыдущего поста ) Спасибо

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


Последний раз редактировалось Ookami; 12.11.2011 в 14:22.
Создать новую тему Ответ Часовой пояс GMT +4, время: 11:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
mask , round preloader

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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