Here is the codes:
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
lal.setActualSize(unscaledWidth, unscaledHeight);
}
override protected function createChildren():void{
super.createChildren();
if( lal == null ){
lal = new Label;
lal.text = "Label";
addChild(lal);
}
}
override protected function measure():void{
super.measure();
measuredWidth = lal.getExplicitOrMeasuredWidth();
measuredHeight = lal.getExplicitOrMeasuredHeight();
}
I track the processing of these functions. The red code excuted before the
green code. I thought the children actual size should be set before his
parent container and then use the children's proterties to set his parent
container.
I comment the green code.So There is nothing on the screen.
The value of "lal.getExplicitOrMeasuredWidth/Height();" is as same as the
"unscaledWidth/Height"
Flex already know before setting the Label's width and height.
Why should the label be set up again ?
在2009-06-04,"Manish Jethani" <[email protected]> 写道:
On Wed, Jun 3, 2009 at 10:26 PM, Manish Jethani
<[email protected]> wrote:
> 2009/6/3 j2me_soul <[email protected]>:
>> override protected function measure():void{
>> this.explicitMinWidth = this.explicitMinHeight = 50;
>> }
>> }
>
> Here you should set the meauredWidth, measuredHeight, and optionally
> measuredMinWidth and measuredMinHeight (they can be set to the same as
> measuredWidth and measuredHeight respectively).
I forgot to say how to do the measurement. Here's how I'd do it:
function measure():void
{
measuredWidth = lal.getExplicitOrMeasuredWidth();
measuredHeight = lal.getExplicitOrMeasuredHeight();
}
Manish