Parents size their children (and sometimes their grandchildren)  I don't
see anyone actually sizing the content, just the contentHolder.

 

________________________________

From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Richard Rodseth
Sent: Saturday, May 31, 2008 2:31 PM
To: [email protected]
Subject: Re: [flexcomponents] Fwd: Center/Shrink To Fit

 

I'd love to wrap up this task. Does anyone have any other suggestions?

On Tue, May 27, 2008 at 8:24 PM, Richard Rodseth <[EMAIL PROTECTED]
<mailto:rrodseth%40gmail.com> > wrote:
> I'm afraid I'm still struggling with this. The classes below work
> (more or less) if I supply a large button as "content", but if I try a
> VBox it appears to shrink to nothing. Any ideas? Hopefully the
> formatting survived.
>
> <view:ScaleOrCenterView width="100%" height="100%" >
> <mx:VBox borderStyle="solid" borderColor="red"
> horizontalScrollPolicy="off" verticalScrollPolicy="off">
> <mx:Button label="Test" width="400" height="400"/>
> </mx:VBox>
> </view:ScaleOrCenterView>
>
>
> [DefaultProperty("content")]
> public class ScaleOrCenterView extends UIComponent
> {
> private var _contentHolder:ScaleToFitContentHolder = new
> ScaleToFitContentHolder();;
> private var _content:UIComponent;
>
> public function ScaleOrCenterView()
> {
> super();
> }
>
> override protected function createChildren():void {
> super.createChildren();
> this.addChild(_contentHolder);
> }
>
> [Inspectable]
> public function set content(value:UIComponent):void {
> if (_content != null) {
> _contentHolder.removeChild(_content);
> }
> _content = value;
> if (_content != null) {
> _contentHolder.addChild(_content);
> }
> this.invalidateSize();
> }
>
> override protected function updateDisplayList(unscaledWidth:Number,
> unscaledHeight:Number):void
> {
> super.updateDisplayList(unscaledWidth, unscaledHeight);
>
> var contentWidth:Number = _content.getExplicitOrMeasuredWidth();
> var contentHeight:Number = _content.getExplicitOrMeasuredHeight();
>
> var xScale:Number = (unscaledWidth / contentWidth);
> var yScale:Number = (unscaledHeight / contentHeight);
>
> _contentHolder.setActualSize(unscaledWidth, unscaledHeight);
>
> _contentHolder.allowInvalidateSize = false;
> if (xScale < 1 || yScale < 1) {
> _contentHolder.scaleX = xScale
> _contentHolder.scaleY = yScale
> } else {
> _contentHolder.scaleX = 1.0;
> _contentHolder.scaleY = 1.0;
> }
> _contentHolder.allowInvalidateSize = true;
>
> }
>
> }
>
> public class ScaleToFitContentHolder extends UIComponent
> {
> public var allowInvalidateSize:Boolean = true;
>
> public function ScaleToFitContentHolder()
> {
> }
>
> override protected function measure():void
> {
> super.measure();
> }
>
> override public function invalidateSize():void
> {
> if (allowInvalidateSize)
> super.invalidateSize();
> }
>
> }
> On Mon, May 26, 2008 at 9:02 PM, Alex Harui <[EMAIL PROTECTED]
<mailto:aharui%40adobe.com> > wrote:
>> One way is to block invalidateSize when scaling the child. See
>> ListBaseContentHolder
>>
>>
>>
>> ________________________________
>>
>

 

Reply via email to