У меня есть пользовательский макет называется NewsLayout:Flex размер компонента, как оборачивать элементы в пользовательском макете
override public function updateDisplayList(width:Number, height:Number)
: void
{
super.updateDisplayList(width, height);
var layoutTarget:GroupBase = target;
var element:ILayoutElement;
for(var i:int = 0; i < layoutTarget.numElements; i++)
{
element = layoutTarget.getElementAt(i);
if(i==0){
element.setLayoutBoundsSize(NaN, NaN);
element.setLayoutBoundsPosition(0, 0);
}
else if(i==1)
{
var refEl = layoutTarget.getElementAt(0);
element.setLayoutBoundsSize(NaN, NaN);
element.setLayoutBoundsPosition(0, refEl.height+5);
}
else if(i==2)
{
var refEl = layoutTarget.getElementAt(0);
var refEl2 = layoutTarget.getElementAt(1);
element.setLayoutBoundsSize(NaN, NaN);
element.setLayoutBoundsPosition(Math.max(refEl2.width,refEl.width)+5, 0);
}
}
}
И мой пользовательский компонент использует этот формат и три больше. Его макет может измениться на лету. Какой бы макет он ни использовал, мой компонент должен обернуть все элементы внутри него.
Для этого я попытался переопределить метод измерения для изменения размера компонента в соответствии с компонентами внутри него. Я пытаюсь вычислить нижнюю точку всех элементов внутри него, как это. Неожиданно y позиция всех элементов равна 0, но, как вы можете видеть, я устанавливаю их координаты в классе макета.
override protected function measure():void {
super.measure(); var max= 0;
for(var i=0 ; i < this.numElements;i++)
{
if((this.getElementAt(i).height +this.getElementAt(i).y) > max)
max = this.getElementAt(i).height + this.getElementAt(i).y;// here y position is 0
}
//this.height =this.measuredHeight;
this.measuredHeight = max;
this.height = max;
trace("maxheight:"+max);
Что такое правильный способ, чтобы компонент обернуть все элементы внутри него, независимо макет он использует?
Код, который вы отправили, пытается группировать элементы в 3 строки с номерами строк, заданными в элементе. Если вы хотите исключить номера строк и подгонять размеры элементов w.r. в контейнер, пожалуйста, скажите это. – Ihsan