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

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

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Хорошая цельная заливка с moveTo не получится. К сожалению.

Старый 15.09.2010, 19:11
jony_e вне форума Посмотреть профиль Отправить личное сообщение для jony_e Найти все сообщения от jony_e
  № 12  
Ответить с цитированием
jony_e

Регистрация: Jan 2008
Сообщений: 87
лучше всего круг или овал рисовать по точкам, тогда выходит идеальный круг и какой хочешь овал, вот пример круга:
Код AS3:
var sector:Sprite = new Sprite();
var radius:int = 200;
var angle:int = 360;
sector.graphics.lineStyle(0, 0x00ff00, 1);
sector.graphics.moveTo(0,0);
sector.graphics.beginFill(0x00ff00,1); 
 
for (var k:uint = 0; k<angle; k++){
sector.graphics.lineTo(radius*Math.cos(k*Math.PI/180), radius*Math.sin(k*Math.PI/180));
}
sector.graphics.lineTo(0,0);
sector.graphics.endFill();
stage.addChild(sector);
овал рисуется по другой формуле, с добавлением константы отвечающей за сплющенность.

Старый 15.09.2010, 19:34
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 13  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
только вместо lineTo использовать curveTo
Код AS3:
protected const RADIAN:Number = Math.PI / 180;
 
public function drawSector(gr:Graphics, xRadius:Number, yRadius:Number, centerX:Number, centerY:Number, startAngle:Number = 0, endAngle:Number = 180, close:Boolean = true):void
        {
            var sector:Number;
            var segmentAngle:Number;
            var startX:Number;
            var startY:Number;
            var middleX:Number;
            var middleY:Number;
            var endX:Number;
            var endY:Number;
            var controlX:Number;
            var controlY:Number;
 
 
            startX = xRadius * Math.cos(startAngle * RADIAN) + centerX;
            startY = yRadius * Math.sin(startAngle * RADIAN) + centerY;
 
            sector = endAngle - startAngle;
            segmentAngle = sector / 4;
 
            if (close)
            {
                gr.moveTo(centerX, centerY);
                gr.lineTo(startX, startY);
            }
            else
            {
                gr.moveTo(startX, startY);
            }
 
            for (var i:Number = segmentAngle + startAngle; i <= endAngle; i += segmentAngle)
            {
                endX = xRadius * Math.cos(i * RADIAN) + centerX;
                endY = yRadius * Math.sin(i * RADIAN) + centerY;
                middleX = xRadius * Math.cos((i - segmentAngle * .5) * RADIAN) + centerX;
                middleY = yRadius * Math.sin((i - segmentAngle * .5) * RADIAN) + centerY;
                controlX = 2 * middleX - (startX + endX) * .5;
                controlY = 2 * middleY - (startY + endY) * .5;
                gr.curveTo(controlX, controlY, endX, endY);
                startX = endX;
                startY = endY;
            }
 
            if (close)
                gr.lineTo(centerX, centerY);
        }
    }

Старый 15.09.2010, 19:46
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 14  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А мне странно, что самый первый код топика по утверждению автора рисует залитый СЕКТОР, а не СЕГМЕНТ 0о
__________________
Поймай яблоко 2!

Старый 15.09.2010, 22:12
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 15  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
наверное имелось в виду второе
__________________
Trapatatupatupa

Старый 16.09.2010, 19:30
jony_e вне форума Посмотреть профиль Отправить личное сообщение для jony_e Найти все сообщения от jony_e
  № 16  
Ответить с цитированием
jony_e

Регистрация: Jan 2008
Сообщений: 87
на самом деле lineTo достаточно. А curveTo рисует не идеальную дугу, всего лишь с одной опорной точкой, а нужно хотя бы две...

Старый 16.09.2010, 19:34
shaman4d вне форума Посмотреть профиль Отправить личное сообщение для shaman4d Найти все сообщения от shaman4d
  № 17  
Ответить с цитированием
shaman4d
 
Аватар для shaman4d

Регистрация: Jun 2008
Сообщений: 204
ну мне курвТу надо для создания сложной интерактивной заливки с возможностью сглаженного изменения формы...уфф

Старый 16.09.2010, 19:57
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 18  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
на самом деле lineTo достаточно. А curveTo рисует не идеальную дугу, всего лишь с одной опорной точкой, а нужно хотя бы две...
Я лучше за 4 прохода нарисую круг (идеальный, можете проверить), чем 360 раз прогонять вычисление тригонометрических операций.

Старый 16.09.2010, 20:29
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 19  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
А я воспользуюсь drawCircle.

Старый 16.09.2010, 20:33
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 20  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
А я воспользуюсь drawCircle.
А если понадобится сектор круга/эллипса?

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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