0

我有从 UIComponent 继承的自定义 flex 组件(已编译,无源代码访问)。它具有固定的宽高比,并且是可扩展的。如果我将它的宽度和高度设置为 100%,它试图适应父级的大小,但它保持宽高比例,所以如果它的比例不等于父级的比例,当调整父级时,这个组件附近可能会出现空白空间。在此处输入图像描述

我需要的是让我的组件完全适合父母的尺寸。有什么好方法可以做到这一点吗?我可以听父母的resize事件,并玩组件的scaleXand scaleY,但可能有更好的方法来解决我的问题(任何属性?)。谢谢。

4

3 回答 3

2

一个很好的方法是使用greensock 的AutoFitArea。编码就像下面这样简单

var area:AutoFitArea = new AutoFitArea(this, 50, 70, 300, 100);
area.attach(myImage, {scaleMode:ScaleMode.PROPORTIONAL_OUTSIDE, crop:true});

这将限制内部的任何内容从那里开始执行给定的尺寸(300,100),您只需更改area' 的宽度,这将为您解决所有问题。

希望能帮助到你

于 2011-03-30T09:37:11.260 回答
1

就个人而言,我要做的是将父组件中的组件设置为宽度/高度 100%,然后在组件本身内,覆盖 updateDisplayList 函数(它返回未缩放的宽度/高度),然后调整您尝试的任何子项的大小显示取决于此容器的宽度/高度。像这样的东西:

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
    if(this._child!= null)
    {
        if(unscaledWidth > unscaledHeight)
        {
            this._child.height = unscaledHeight;
            this._child.scaleX = this._video.scaleY;
        }else{
            this._child.width = unscaledWidth;
            this._child.scaleY = this._video.scaleX;
        }
    }
}

应该这样做。

于 2011-03-30T18:19:54.613 回答
0

组件是否应该保持其比例?如果没有,您可以如您所说,监听父级的调整大小事件并将宽度和高度设置为组件值。

如果组件应保持其比例,您可以调整组件的背景大小,使其适合父级大小,并单独调整组件内容的大小。

于 2011-03-30T09:37:03.997 回答