Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 更改文本';s文本并在Flex中获取测量宽度_Flash_Apache Flex - Fatal编程技术网

Flash 更改文本';s文本并在Flex中获取测量宽度

Flash 更改文本';s文本并在Flex中获取测量宽度,flash,apache-flex,Flash,Apache Flex,我在mxml中有一个文本元素。文本值正在由用户操作更改。我想将宽度设置为文本的精确大小。由于width属性是实际组件的宽度,因此触发FlexEvent.UPDATE_COMPLETE事件后,我需要measuredWidth属性: textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{ textField.width = textfield.measuredWidth; }); 这

我在mxml中有一个文本元素。文本值正在由用户操作更改。我想将宽度设置为文本的精确大小。由于width属性是实际组件的宽度,因此触发FlexEvent.UPDATE_COMPLETE事件后,我需要measuredWidth属性:

textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{
    textField.width = textfield.measuredWidth;
});
这仅在第一次更改为正确的宽度。之后,它只能变小,不能变大。我已经阅读了文本和UIComponent源代码,它说我需要调用invalidateSize()。但只有当我将explicitWidth属性设置为NaN时,它才起作用。所以我做了一个setter函数:

function setText(newValue:String):void {
  textField.text = newValue;
  textField.explicitWidth = NaN;
  textField.invalidateSize();
}
但它仍然只是在缩小。我的问题是,如何在UPDATE_COMPLETE事件之后始终获得正确的measuredWidth值


谢谢

我同意一些评论者的观点,也许有更好的替代方案可以达到同样的效果。但是,您可以使用文本元素的函数来确定所需的宽度:

将文本元素更改为标签可以解决问题。

只是好奇为什么需要此属性?也许你正在试图解决一些可以用其他方法解决的问题?我真正需要的是将文本元素的大小与内容文本的大小相适应,使其始终保持相同的宽度。有更好的实践吗?我说得对吗?您需要
文本
控件更改高度以适应所有文本?宽度是我想要的。它总是一行,我需要它显示在一行。哦,对了:)它与标签完美配合,谢谢!我知道,但正如我所说的,如果测量的宽度比以前小,它就会工作。对我来说,它只在第一盘时设置正确。从那以后就不可靠了。