Flex:从HBox.rawChildren添加/删除组件会导致horizontalAlign失败?
问题描述:
我有一个HBox显示一系列的画布。我正在移除一个画布的子项并将其添加到包含HBox的rawChildren中,以便我可以定位它,并使其看起来转移到画布边界之外。Flex:从HBox.rawChildren添加/删除组件会导致horizontalAlign失败?
这里是从画布代码:
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.horizontalAlign设置为“右”,当我添加的孩子回到画布,hbox内停止显示正确地将所有儿童画布重叠在右侧。如果HBox对齐“左”tho没有问题。
这是一个错误?有没有解决办法?
谢谢!
答
这是一个错误?有没有解决办法?
约翰 - Isaacks
这不是因为这样一个错误,它更是你在一个不寻常的方式使用的容器。
当您使用HBox时,您将根据HBox组件的规则,决定将所有儿童以线性水平排列。
明确定位一个孩子并不是HBox所讲的 - 这不在他们的工作描述中。
我会建议你在帆布内有一个HBox。当您需要设置其位置并使其看起来像是在HBox之外时,您可以将其水平放置到HBox中或将其移动到画布上时将其添加到HBox中。
答
当您使用rawChildren时,您只需绕过布局机制。
您应该直接在组件上使用addChild或addChildAt。