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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.01.2013, 18:39
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 1  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
По умолчанию Как растянуть графику в s:Group ?

Доброго времени суток.
Рисую круг на s:Group
Код AS3:
var grp:Group = new Group();
 
addElement(grp);
grp.graphics.beginFill(0xFF0000);
grp.graphics.drawCircle(100, 100, 100);
grp.width = 500;
Когда задаю ширину, нужно чтобы и нарисованный круг также растягивался вместе с компонентом (как Sprite), но этого не происходит.
Подскажите пожалуйста как заставить эту графику растгягиваться именно в группе, чтобы не приходилось добавлять UIComponent, в него добавлять Sprite и в нём рисовать этот круг, потом при растягивании все эти элементы обновлять?

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Либо вешаете ресайз ивент и перерисовываете круг по его срабатыванию, либо задавайте лейаут группы через top, left и т. д.
__________________
In Code We Trust

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
spark.primitives.Ellipse
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.01.2013, 22:37
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 4  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
alatar, Astraport спасибо.
Дело в том, что у меня не только круг, но и полигоны с n сторонами надо растягивать, которых в этих примитивах нет. Я так понимаю, если я их нарисую с помощью этих классов, а потом буду растягивать. они также будут себя вести как и graphics - при растягивании толщина линии увеличивается / уменьшается. То же самое будет с бордером всех элементов.
Т.е. получается единственный выход, в этом случае, перерисовывать при ресайзе.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
1. Написание своего примитива ничуть не труднее использования Graphics.
2. Нет. При изменении размеров котейнера примитивы перерисовываются для новых размеров.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.01.2013, 15:14
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 6  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Цитата:
Написание своего примитива ничуть не труднее использования Graphics.
Не могли бы вы скинуть ссылку на то как это сделать ?
Наследуюсь от FilledElement, и в draw() рисую сам полигон через обычные функции Graphics, но, во-первых - полигон не заливается, хотя fill я задаю (правда два края полигона немного не замыкаются), во-вторых - при ресайзе самой группы в которой всё это рисуется, не изменяются размеры полигона, мне надо вручную прописать изменения ?
Единственное что нашёл - это вот эту тему. Но там вся тема не раскрыта.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
https://github.com/alatarus/gauges/b.../DonutSlice.as
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.01.2013, 20:03
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 8  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Спасибо, понял ошибку с растягиванием.
Но всё ещё не получается задать заливку. Как я сказал, полигон немного не замыкается полностью, есть какие-нибудь опции заливки, что-то вроде Close Small Gaps во флэш IDE? Или нужно чтобы обязательно была замкнутый сегмент ?
Задаю заливку через тэг fill, когда считываю значение color заливки, возвращает правильный цвет, но заливка не применяется к фигуре.

Добавлено через 4 минуты
Дописал алгоритм чтобы нормально всё замыкалось, всё равно не заливается.
Graphics сам должен знать что заливать. раз не надо использовать beginFill и endFill ?


Последний раз редактировалось AlexLucas; 31.01.2013 в 20:45.
Старый 31.01.2013, 20:45
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Код покажите.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.01.2013, 20:57
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 10  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Группа в которой находится примитива
Код AS3:
<s:Group .... >
<root:PolygonHelper id="poly">
		<root:fill>
			<s:SolidColor id="fill" color="0xFF00FF" alpha="1" />
		</root:fill>
		<root:stroke>
			<s:SolidColorStroke id="border" color="0xFF0000" weight="2" alpha="1" />
		</root:stroke>			
 
	</root:PolygonHelper>
//......
</s:Group
Рисую примитиву так
Код AS3:
override protected function draw(g:Graphics):void {
 
			sid = 0;
 
			points=new Array();
			ratio=360/_segments;
			sideTop = _centerY - _radiusY;
 
			for(var i:int=_rotating;i<=360+_rotating;i+=ratio)
			{
				var xx:Number=_centerX+Math.sin(radians(i))*_radiusX;
				var yy:Number=sideTop+(_radiusY-Math.cos(radians(i))*_radiusY);
				points[sid]=new Array(xx,yy);
				if(sid>=1) 
				{
 
					g.moveTo(points[sid-1][0], points[sid-1][1]);
					g.lineTo(points[sid][0], points[sid][1]);
				}
				sid++;
			}
 
			sid = 0;		
		}
 
//обновляю размеры при растягивании
public function update():void {						
 
			_radiusX = _centerX =  this.width / 2;
			_radiusY = _centerY = this.height / 2;
 
			//invalidateSize();
                        invalidateDisplayList();                           
                        //invalidateParentSizeAndDisplayList();    эти перепробовал, не помогло
		}
Рисует всё правильно , но не заливает.

Добавлено через 10 минут
всё из-за того что использую после отрисовки каждой прямой moveTo, а надо использовать всего один раз. Чего не знал того не знал.
Работает, alatar спасибо за участие, и за ваши примеры


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

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

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


 


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


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