Flex:从HBox.rawChildren添加/删除组件导致horizo​​ntalAlign失败?

时间:2009-11-05 21:15:52

标签: flex layout flex3

我有一个展示一系列画布的HBox。我正在移除一个画布的子项并将其添加到包含HBox的rawChildren中,因此我可以将其定位,并使其看起来移出画布的边界。

以下是画布中的代码:

private function onMouseOver(e:MouseEvent):void
{
    (this.parent as HBox).rawChildren.addChild(dateLabel);
    dateLabel.x = (this.parent as HBox).localToGlobal(new Point(this.x,0)).x - 18;
}

private function onMouseOut(e:MouseEvent):void
{
    addChild(dateLabel);
    dateLabel.x = 0;
}

它可以工作,但如果包含HBox.horizo​​ntalAlign设置为“right”,当我将子项添加回Canvas时,HBox会停止正确显示并将所有子画布重叠在右侧。如果HBox与“左”对齐,则没有问题。

这是一个错误吗?有工作吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

使用rawChildren时,只需绕过布局机制即可。

您应该直接在组件上使用addChild或addChildAt。

答案 1 :(得分:1)

  

这是一个错误吗?有工作吗?
   - 约翰·艾萨克斯

这不是一个错误,更多的是你以不寻常的方式使用容器。

当您使用HBox时,您决定根据HBox组件的规则,所有儿童都按照线性,水平排列布局。

明确定位孩子不是HBox所关注的 - 这不是他们的工作描述。

我建议您在Canvas中使用HBox。您可以将dateLabel添加到HBox时应该水平放置,或者当您需要设置其位置并使其看起来像是在HBox之外时将其移动到Canvas。