Я пытаюсь присоединить некоторые из моего класса actionscript, унаследованного от Sprite, к моему приложению Flex, прикрепив его к UIComponent, а затем добавить UIComponent на панель. Тем не менее, размер моего класса Sprite кажется больше, чем панель. Итак, я пытаюсь изменить его размер с помощью свойства DisplayObject.scale, но мне нужно знать размер моего контейнера. Поскольку я пытаюсь сделать свой код многоразовым, я решил, что мой класс Sprite должен обрабатывать изменение размера, получая его через родительское свойство (скажем, я могу изменить его, установив
this.scaleX = this.parent.Width / this.width или что-то вроде этого)
Однако родительский класс моего класса Sprite, который является UIComponent, имеет ширину / высоту 0.
Итак, мой вопрос:
1) Есть ли лучший способ изменить размер класса DisplayObject, чтобы он соответствовал своему контейнеру при подключении к объекту Flex?
2) Если вы знаете, почему размер моего UIComponent остается равным 0, а мой DisplayObject по-прежнему отображается в полном размере?
Вот мой код, использующий Flash Builder 4:
private var loader:Loader = new Loader();
private function testLoader():void {
var urlRequest:URLRequest = new URLRequest("http://localhost/welcome.png");
loader.load(urlRequest);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaderLoadComplete);
}
private function onLoaderLoadComplete(e:Event):void {
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,onLoaderLoadComplete);
var ui : UIComponent = new UIComponent();
ui.addChild(loader);
panelTest.addElement(ui);
trace("ui.width = " + ui.width);
trace("ui.height = " + ui.height);
trace("loader.width = " + loader.width);
trace("loader.height = " + loader.height);
trace("panelTest.width = " + panelTest.width);
trace("panelTest.height = " + panelTest.height);
}
И это результат при запуске:
ui.width = 0
ui.height = 0
loader.width = 571
loader.height = 411
panelTest.width = 480
panelTest.height = 320