Высота текста в Flex - PullRequest
       13

Высота текста в Flex

2 голосов
/ 08 апреля 2010

Как вы можете получить высоту компонента Text, который был динамически создан из ActionScript. Например, если у вас есть что-то вроде:

var temp:Text = new Text;
temp.width = 50;
temp.text = "Simple text";

как получить высоту темп?

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

Вы можете вызвать validateNow (), чтобы убедиться, что стиль применен (и соответствующая высота)

1 голос
/ 08 апреля 2010

след (temp.height);

Редактировать на основе комментариев:

ОК. Я понимаю, почему, поскольку вы полагаетесь на высоту по умолчанию, элемент управления не имеет свойства высоты до тех пор, пока пользовательский интерфейс не нарисует его, поэтому вы не сможете вернуть его, пока он не будет добавлен в родительский объект. так что это простое приложение вернет 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>

Но это только потому, что я не пытаюсь получить высоту до тех пор, пока предмет не будет нарисован.

ИЛИ основываясь на том, что сказал пользователь 294702: Это тоже работает.

<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>

Надеюсь, вам сегодня понравился урок пользовательского интерфейса, я не могу принимать советы, но, пожалуйста, дайте положительные результаты в моей оценке или конструктивной критике. :-)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...