【问题标题】:Evenly distribute components relatively their size相对于它们的大小均匀分布组件
【发布时间】:2014-09-25 16:11:14
【问题描述】:

假设HGroup 是 100px 宽,其中有两个图像:image_1 是 20px,image_2 是 30px。

我希望 image_1 在前 40 个像素(从像素 11 到 30)内居中,image_2 在其余 60 个像素内(从像素 56 到 85),因为它们相对于它们的大小划分了整个 100 像素宽的空间.

Spark 中是否有允许这样做的组件或属性?

【问题讨论】:

    标签: actionscript-3 apache-flex flex4 flex-spark


    【解决方案1】:

    也许我错了,但没有任何方法可以做到这一点。已为示例创建实例名称:

    // container width = 100
    var C:HGroupContainer = new HGroupContainer();
    this.addChild(C);
    
    const W1:int = 40;
    const W2:int = 60;
    
    var r1:Rect1 = new Rect1();
    r1.x = (W1 - r1.width) / 2;
    this.addChild(r1);
    
    var r2:Rect2 = new Rect2();
    r2.x =  W1 + (W2 - r2.width) / 2; 
    this.addChild(r2);
    

    图片左上角对应的坐标x = 0, y = 0。

    【讨论】:

    • 这在使用布局容器的 Flex 中是行不通的。这根本不是布局引擎的工作方式。
    【解决方案2】:

    您必须将图像包装在 HGroups 中,并将水平对齐设置为居中。这就是 Flex 的做法。

    【讨论】:

    • 如何让它们占据相对空间?我所做的一切只是使它们彼此粘合并附加到窗口的左侧(如果未指定水平对齐,或者如果它是“中心”,则附加到窗口的中心)。仅当我指定 gap 时才会出现两张图片之间的空间,但它是固定的 - 窗口大小改变时不会改变。
    • 他们周围的团体必须注意这一点。例如,您可以在加载图像时设置大小:带有 + 填充的图像。
    • 好吧,对组件组合进行动态更改肯定会解决问题(至少重新实现“measure()”函数)。但我想知道如何将所有组件静态指定为 MXML 结构的一部分。
    • 这更容易。只需在 MXML 中使用所有其他属性和样式显式设置组件的宽度。
    • 不可能知道所有图像的总和(甚至单独)的宽度,因为它们甚至没有在 MXML 规范部分加载。嗯..
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2022-07-20
    • 2012-05-30
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多