我有一个由两部分组成的组件,比如说Vbox中有两个Hbox A和B.
在我想要的特定电话上:
- Hide B with B.visible = false
- setStyle("borderSkin", FooBorderOn);
问题是在调整父Vbox大小调整之前绘制边框, 所以我最终得到一个Vbox周围的边框,B看不见:
.....................
. A .
. .
. .
. .
. BLANK SPACE .
.....................
我希望边界能够围绕vbox的下一个更新大小。 有没有像“那样更好地重绘”?在flex?
非常感谢
答案 0 :(得分:2)
看一下callLater方法。这将推迟方法调用,直到下一帧更新。
答案 1 :(得分:0)
这是callLater ......我把它放在我的记忆中
答案 2 :(得分:0)
即使你隐藏了VBox,HBox B仍然存在。我会缩小VBox的高度,将VerticalScrollPolicy设置为false(这样滚动条不会显示),或者只是从VBox中删除HBox(myVBox.removeChild())。
答案 3 :(得分:0)
有几种方法可以推迟采取行动。如果您自己开发UI组件,请查看invalidateProperties / commitProperties。这是一种不会卡在更新循环中的机制:标记要更新的属性(通常通过将其存储在temp var中和/或添加xxxChanged布尔值)并调用invalidateProperties()。然后,Flex将稍后调用commitProperties() - 累积可能相互影响的几个更改 - 您可以在其中进行实际更改。
callLater也是一个选项,但通常它并不像人们想象的那样“晚一点”:) (这是下一次屏幕刷新,可能很快就会发生,甚至在其他排队行动之前)
但是在您的情况下,根据您的描述,我认为您错过了“includeInLayout”属性。容器将决定基于这两个单独的属性显示(可见)或为对象腾出空间(includeInLayout)。另请参阅Preventing layout of hidden controls。