Как автоматически установить ширину TextField () - PullRequest
0 голосов
/ 19 декабря 2009

Я пытаюсь установить ширину объекта Textfield () на основе его содержимого строки, которое я установил. Есть ли способ динамически установить это, когда строка была отправлена ​​объекту?

У меня есть:

var t1:TextField = new TextField()
t1.x = stage.stageWidth / 2;
t1.y = stage.stageHeight / 2;           
t1.text = "some string that i would want to render";            
t1.textColor = 0x000000;
t1.cacheAsBitmap = true;
addChild(t1);

Спасибо за любые предложения ... JML

Ответы [ 3 ]

3 голосов
/ 19 декабря 2009

TextField.autoSize

редактирование:

Вы должны правильно прочитать документацию, это переменная-член, которую на самом деле нужно установить. Я приведу краткий пример того, как это работает:

var tf:TextField = new TextField();
tf.text     = 'Some text.';
tf.autoSize = TextFieldAutoSize.LEFT;
tf.x = ( stage.stageWidth  - tf.width ) / 2;
tf.y = ( stage.stageHeight - tf.height ) / 2;

В качестве альтернативы вы также можете сначала выровнять текстовое поле и использовать TextFieldAutoSize.CENTER, чтобы выровнять его по центру.

1 голос
/ 19 декабря 2009
t1.text = "Some text";
t1.width = t1.textWidth + 5;
t1.height = t1.textHeight + 5;

Почему + 5? Потому что Adobe сосет и добавляет внутреннюю канаву вокруг ваших вещей. Согласно документации это должно быть 2 пикселя на сторону, но на самом деле это немного больше, поэтому вы добавляете еще один +1 для хорошей меры.

0 голосов
/ 19 декабря 2009

вы можете попробовать использовать метод getCharBoundaries () (он возвращает прямоугольник, окружающий символ по указанному индексу). Используйте его, чтобы получить прямоугольник из первого и последнего символов и установить ширину, равную разности этих прямоугольников.

Довольно запутанно, должен быть лучший способ, но если нет, то это должно сработать.

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