Масштабирование UIComponent не масштабирует его потомков - PullRequest
0 голосов
/ 11 февраля 2011

Я создаю приложение Flex, которое создает аккуратные векторные изображения на основе некоторых параметров / фильтров.Относительно новый для Flash / Flex / AS3, поэтому я учусь по ходу дела.

Короче говоря:

// I create a new UIComponent
var myuic:UIComponent = new UIComponent();

// I then draw some vector graphics to it.. 
myuic_prev.graphics.beginFill(fgRGB, 1);
myuic_prev.graphics.drawRect(xptr, yptr, pxls, pxls);
myuic_prev.graphics.beginFill(fgRGB, 1);
myuic_prev.graphics.drawCircle(cx,cy,cr);
myuic.graphics.beginFill(fgRGB, 1);
myuic.graphics.drawCircle(cx,cy,cr);
myuic_prev.graphics.endFill();

По различным причинам полученное изображение может или может бытьне помещается в мой контейнер Canvas или Display, в данном случае это VBOX с фиксированной шириной.В этом случае мне нужно масштабировать получающееся изображение UIComponent.

Я прочитал в документации Adobe, что корректировка масштаба UIComponent будет соответствующим образом масштабировать его дочерние элементы.На самом деле я вижу много тем о том, как это предотвратить.

Итак, я попробовал это ... просто:

// Scale my UIC by changing the width
myuic_prev.width = 520;     
// Now make the two scale factors the same, this keeps proportions.
myuic_prev.scaleY = mxuic_prev.scaleX;

Я обнаружил, что это, кажется, масштабирует сам UIComponent, но НЕ детей или формы, которые я нарисовал в нем.Фигуры теперь выходят за границы или обрезаются, покидая страницу.

Что я не понимаю?Разве эти формы не рассматриваются как дети?Или как мне сделать эту работу.Спасибо!

1 Ответ

0 голосов
/ 11 февраля 2011

Свойство width для UIComponent работает не так, как его родительский класс Sprite, поскольку компоненты Flex имеют другую логику изменения размера.В примере изменение width или height не влияет на слой graphics.Если вы хотите масштабировать слой UIComponent и graphics, попробуйте напрямую использовать свойства scaleX и scaleY.

Попробуйте это в примере (если вы хотите масштабировать по ширине до 520 исохранить соотношение сторон):

component.scaleX = component.scaleY = 520 / component.width;
...