|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Как растянуть графику в s:Group ?
Доброго времени суток.
Рисую круг на s:Group var grp:Group = new Group(); addElement(grp); grp.graphics.beginFill(0xFF0000); grp.graphics.drawCircle(100, 100, 100); grp.width = 500; Подскажите пожалуйста как заставить эту графику растгягиваться именно в группе, чтобы не приходилось добавлять UIComponent, в него добавлять Sprite и в нём рисовать этот круг, потом при растягивании все эти элементы обновлять? |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
alatar, Astraport спасибо.
Дело в том, что у меня не только круг, но и полигоны с n сторонами надо растягивать, которых в этих примитивах нет. Я так понимаю, если я их нарисую с помощью этих классов, а потом буду растягивать. они также будут себя вести как и graphics - при растягивании толщина линии увеличивается / уменьшается. То же самое будет с бордером всех элементов. Т.е. получается единственный выход, в этом случае, перерисовывать при ресайзе. |
|
|||||
1. Написание своего примитива ничуть не труднее использования Graphics.
2. Нет. При изменении размеров котейнера примитивы перерисовываются для новых размеров.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Цитата:
Наследуюсь от FilledElement, и в draw() рисую сам полигон через обычные функции Graphics, но, во-первых - полигон не заливается, хотя fill я задаю (правда два края полигона немного не замыкаются), во-вторых - при ресайзе самой группы в которой всё это рисуется, не изменяются размеры полигона, мне надо вручную прописать изменения ? Единственное что нашёл - это вот эту тему. Но там вся тема не раскрыта. |
|
|||||
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Спасибо, понял ошибку с растягиванием.
Но всё ещё не получается задать заливку. Как я сказал, полигон немного не замыкается полностью, есть какие-нибудь опции заливки, что-то вроде Close Small Gaps во флэш IDE? Или нужно чтобы обязательно была замкнутый сегмент ? Задаю заливку через тэг fill, когда считываю значение color заливки, возвращает правильный цвет, но заливка не применяется к фигуре. Добавлено через 4 минуты Дописал алгоритм чтобы нормально всё замыкалось, всё равно не заливается. Graphics сам должен знать что заливать. раз не надо использовать beginFill и endFill ? Последний раз редактировалось AlexLucas; 31.01.2013 в 20:45. |
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Группа в которой находится примитива
<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 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. |
|
« Предыдущая тема | Следующая тема » |
|
|