PDA

Просмотр полной версии : Валидация размеров в AsWing


expl
24.02.2011, 00:29
Доброго времени суток всем!
Сейчас руки дошли до AsWing, попытался разобраться, но не вышло

Проблема в следующем:

- при изменении текста кнопки на более короткий, раскладка автоматически НЕ ужимает кнопку
(только когда у контейнера validate() по-дёргаешь - кнопка принимает правильный размер)

- если менять размер кнопки - та же песня - кнопка изменяется, а её соседи не пододвигаются,
принудительно вызываешь validate() - размеры кнопки возвращаются в свои границы.

- и вообще: приходится validate() вручную вызывать даже после простого добавления кнопки.

Что я делаю не так? Или AsWing впринципе не может изменять раскладку автоматически?
(Флекс это точно умеет, но там всю голову сломаешь, пока разберёшся, как оно работает)

package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;

import org.aswing.AsWingManager;
import org.aswing.JButton;
import org.aswing.JPanel;

public class AsWingResearch extends Sprite
{
private var _container:JPanel;

public function AsWingResearch()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

AsWingManager.setRoot(this);

_container = new JPanel();
addChild(_container);

var button:JButton = new JButton("Click for change");
button.addEventListener(MouseEvent.CLICK, onChangeWidthClick);
_container.append(button);

_container.append(new JButton("Text"));
_container.append(new JButton("Text"));
_container.append(new JButton("Text"));

stage.addEventListener(Event.RESIZE, onStageResize);
onStageResize();
}

private function onStageResize(event:Event = null):void
{
_container.setSizeWH(stage.stageWidth, stage.stageHeight);
_container.validate();// Если эту строчку НЕ написать, почему-то ничего не отображается
}

private function onChangeWidthClick(event:MouseEvent):void
{
(event.currentTarget as JButton).setText("Short text");
}
}
}