如何防止Flex中特定子元素的缩放?

时间:2013-12-10 16:03:18

标签: actionscript-3 flex flex4 flex4.5

我有一个skinnable容器,在两个轴上缩放到0.5,即scaleX = 0.5和scaleY = 0.5,根据flex缩放,如果我缩放容器,那么相应的子元素也会得到缩放,但我需要阻止其中一个缩小容器的孩子。我试过这样的事情

    public static function preventScaleForComponent(target:UIComponent):void
    {
        if(!target)
            return;

        var parent:DisplayObjectContainer = target.owner;
        if(parent)
        {
            trace("Target ScaleX :: "+target.scaleX+"Target ScaleY :: "+target.scaleY);
            trace("Parent ScaleX :: "+parent.scaleX+"Parent ScaleY :: "+parent.scaleY);

            target.scaleX = 1 + parent.scaleX;
            target.scaleY = 1 + parent.scaleY;
        }
    }

但我不知道这是正确的方式还是我们可以通过任何其他方式来做。如果我的父容器缩放到0.5,那么子缩放值将为1.5,因此它看起来与正常情况下的缩放相同。

1 个答案:

答案 0 :(得分:2)

我认为你在正确的轨道上,但你的总和是错误的,让一个儿童组件保持原来的大小:

target.scaleX = 1/parent.scaleX;

这样,如果父标度为2(正常大小的两倍),则目标/子标度将为0.5(原始大小的一半),并且在其父级的上下文中为其原始大小。

请记住,缩放是应用于绝对尺寸(宽度/高度)的乘数,而不是自身的测量 - 当您将父级加倍时,您必须将子项减半,反之亦然,只需添加从一个到另一个的数字等

希望这有帮助!