如何获取LinkButton对象的宽度?
myLinkButton = new LinkButton();
myLinkButton.label =“blabla”;
myLinkButton.setStyle(“fontSize”,24);
myContainer.addChild(myLinkButton); trace(myContainer.width); //这不起作用,因为我没有直接设置属性
感谢
答案 0 :(得分:1)
首先,trace()
显示了什么?是null
还是undefined
还是NaN
还是只是错误的值?
然后,我可以通过几种方式思考如何解决这个问题:
尝试使用getBounds()
或getRect()
。这些方法返回Rectangle
对象作为DisplayObject
的边界框(包括所有坐标和尺寸)。有时Flex的行为有点奇怪,并返回对象坐标或尺寸的错误/关闭结果。
尝试使用validateSize()
和/或measuredWidth
进行试验。也许您过早地尝试访问width
属性,以便Flex无法及时进行测量/布局。
类似的想法:如果您使用myContainer.callLater(trace, [myContainer.width]);
会发生什么(假设您的myContainer
继承自UIComponent
)?如果您确实使用callLater()
获得了有效结果,但在直接访问width
时却没有,那么Flex就没有机会布局和更新容器。
您也可以尝试使用this method,它会从对象创建一个位图并返回位图的height
/ width
。如果容器中包含visible = false
的组件,这尤其有用,因为Flex在这方面不能很好地处理不可见的组件。
最后,您可以尝试访问$width
命名空间中的mx_internal
并检查该属性的值。但是,使用mx_internal
是一种非常难看的黑客攻击,因为这些属性和方法不适合外部使用,并且可能随时更改(因此,当新版本发布时,您的组件可能会停止工作) - 所以谨慎使用。