Какие контейнеры лучше использовать в приложении с простым GUI? Хочу на их базе сверстать Header, Content, Footer. Что бы можно было менять их свойства типа BackgroudColor, BorderColor и чтобы контролы внутри них имели относительные контейнера размеры. Например, изменил размер хедера -> изменилось расположение кнопки.
начал писать свой класс, но может есть что-то готовое уже? да и не уверен я за свой контейнер..

Код AS3:
public class Container extends Sprite
{
public function Container(w:Number=0,h:Number=0) {
_width = w;
_height = h;
}
protected:
var _background:Sprite = new Sprite();;
var _border:Sprite = new Sprite();
var _height:Number = 0;
var _width:Number = 0;
var _borderThickness:Number = 1;
var _borderColor:uint = 0x000000;
var _backgroundColor:uint = 0xFFFFFF;
public function set Height(height:Number) {
_height = height;
Init();
}
public function set Width(width:Number) {
_width = width;
Init();
}
public function get Height():Number {
return _height;
}
public function get Width():Number {
return _width;
}
public function set BorderThickness(thickness:Number) {
_borderThickness = thickness;
Init();
}
public function set BorderColor(color:uint) {
_borderColor = color;
Init();
}
public function set BackgroundColor(color:uint) {
_backgroundColor = color;
Init();
}
public function Init()
{
_background.graphics.clear();
_background.graphics.beginFill(_backgroundColor);
_background.graphics.drawRect(0, 0, _width, _height);
addChild(_background);
_border.graphics.clear();
_border.graphics.lineStyle(_borderThickness, _borderColor);
_border.graphics.drawRect(0, 0, _width, _height);
addChild(_border);
}
хедер

Код AS1/AS2:
public class HeaderMenu extends Container
{
var btnLoad:Button = new Button();
public function HeaderMenu(w:Number, h:Number) {
super(w,h);
_backgroundColor = 0xE13737;
btnLoad.label = 'Загрузить SWF';
Init();
}
public override function Init()
{
super.Init();
btnLoad.x = 10;
btnLoad.y = Height / 2 - btnLoad.height / 2;
addChild(btnLoad);
}
}
Добавлено через 11 минут
Да и в таком случае, если я меняю цвет фона контейнера (через свойство базового класса), помимо перерисовки фона и рамки ещё заново перерасчитаются координаты кнопки. а это уже лишнее. Контролы должны перестраиваться только при изменении размера контейнера.
Добавлено через 1 час 1 минуту
можно разбить Init() на две функции. одна будет перерисовывать фон и рамку и вызываться при изменение любого свойства , а вторая виртуальная будет перестраивать контролы и вызываться только при изменении Height, Width. Работать будет, но может плюнуть и воспользоваться каким-нибудь готовым решением?