Apache flex Flex中文本的高度

Apache flex Flex中文本的高度,apache-flex,actionscript-3,text,height,Apache Flex,Actionscript 3,Text,Height,如何获取从ActionScript动态创建的文本组件的高度。例如,如果您有以下内容: var temp:Text = new Text; temp.width = 50; temp.text = "Simple text"; 如何获取温度的高度?跟踪(温度高度) 根据评论进行编辑: 好的,我明白为什么了,因为您依赖于默认高度,所以在UI绘制控件之前,该控件没有高度属性,因此在将其添加到父对象之后,您才能返回它。因此,当你点击文本时,这个简单的应用程序将返回22: <mx:Applicat

如何获取从ActionScript动态创建的文本组件的高度。例如,如果您有以下内容:

var temp:Text = new Text;
temp.width = 50;
temp.text = "Simple text";
如何获取温度的高度?

跟踪(温度高度)

根据评论进行编辑:

好的,我明白为什么了,因为您依赖于默认高度,所以在UI绘制控件之前,该控件没有高度属性,因此在将其添加到父对象之后,您才能返回它。因此,当你点击文本时,这个简单的应用程序将返回22:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
 <mx:Script>
  <![CDATA[
   import mx.controls.TextInput;
   private function init():void{
    var bar:TextInput = new TextInput
    bar.x = 5;
    bar.y = 5
    bar.width = 50;
    bar.name = "bar";
    foo.addChild(bar);
    bar.addEventListener(FlexEvent.CREATION_COMPLETE,runthis);
   }

   private function runthis(evt:FlexEvent):void{
    trace(TextInput(evt.currentTarget).height);
   }
  ]]>
 </mx:Script>
 <mx:Canvas x="10" y="10" width="200" height="200"  id="foo">
 </mx:Canvas>

</mx:Application>

但那只是因为我不想得到高度,直到项目已经画好

或者根据user294702所说的:这也有效

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
 <mx:Script>
  <![CDATA[
   import mx.events.FlexEvent;
   import mx.controls.TextInput;
   private function init():void{
    var bar:TextInput = new TextInput
    bar.x = 5;
    bar.y = 5
    bar.width = 50;
    bar.name = "bar";
    foo.addChild(bar);
    foo.validateNow();
    trace(bar.height);
   }
  ]]>
 </mx:Script>
 <mx:Canvas x="10" y="10" width="200" height="200"  id="foo">
 </mx:Canvas>

</mx:Application>


我希望您喜欢今天的UI课程,我不能接受提示,但请就我的评估或建设性的批评给出积极的结果。:-)

您可以调用validateNow()以确保应用了样式(以及与高度相关的样式)

实际上,这是我尝试的第一件事,但我一直得到0。这是最奇怪的事情。宽度是显式设置的,在这个代码段之后,它有适当的值-50。但无论我做什么,身高都是0。我还尝试了temp.measuredheaight和temp.getExplicitOrMeasuredHeight(),但它们也返回0。哦,好的,我明白了。在绘制控件之前,您是否知道(或者实际上您知道是否可能)如何计算高度?我需要的是计算几个文本组件的累积高度。基于这一点,我会知道我需要画的很多画。是否可以在呈现组件之前对其进行测量?实际上,我想我可以使用measureText()函数来实现此目的,但我有点希望可以直接从组件获得高度。无论如何,测量文本都是误导性的。文本控件略大于其内部的文本。正如user294702所说,validatenow()应该强制控件进入要测量的UI。不过,你还可以做些别的事情。把你的函数一分为二。您可以将click事件更改为creation complete事件(我在示例中更改了该事件),然后继续在该事件处理程序中执行的操作。感谢ivertedSpear和user294702。我使用creationComplete事件处理程序做了类似的事情。