我有一个展示一系列画布的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.horizontalAlign设置为“right”,当我将子项添加回Canvas时,HBox会停止正确显示并将所有子画布重叠在右侧。如果HBox与“左”对齐,则没有问题。
这是一个错误吗?有工作吗?
谢谢!
答案 0 :(得分:1)
使用rawChildren时,只需绕过布局机制即可。
您应该直接在组件上使用addChild或addChildAt。
答案 1 :(得分:1)
这是一个错误吗?有工作吗?
- 约翰·艾萨克斯
这不是一个错误,更多的是你以不寻常的方式使用容器。
当您使用HBox时,您决定根据HBox组件的规则,所有儿童都按照线性,水平排列布局。
明确定位孩子不是HBox所关注的 - 这不是他们的工作描述。
我建议您在Canvas中使用HBox。您可以将dateLabel
添加到HBox时应该水平放置,或者当您需要设置其位置并使其看起来像是在HBox之外时将其移动到Canvas。