FLEX:我如何获得linkBut​​ton对象的宽度?

时间:2010-04-18 10:39:47

标签: flex

如何获取LinkBut​​ton对象的宽度?

myLinkBut​​ton = new LinkBut​​ton(); myLinkBut​​ton.label =“blabla”;
myLinkBut​​ton.setStyle(“fontSize”,24);

myContainer.addChild(myLinkBut​​ton); trace(myContainer.width); //这不起作用,因为我没有直接设置属性

感谢

1 个答案:

答案 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是一种非常难看的黑客攻击,因为这些属性和方法不适合外部使用,并且可能随时更改(因此,当新版本发布时,您的组件可能会停止工作) - 所以谨慎使用。