0
包装的元素我有被称为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 2013-03-25 12:11:43