PDA

Просмотр полной версии : TLFTextField и его width


Xaider
15.01.2016, 12:54
Друзья, помогайте..
Свойство width для Sprite c TLFTextField определяется не своевременно, как решить?


import fl.text.TLFTextField;
import flash.display.Sprite;

var txt:TLFTextField = new TLFTextField();
var mc:Sprite = new Sprite();
mc.addChild(txt);
addChild(mc);

txt.text = "fsdfsdfsd";
trace(mc.width); //0
//если засветить свойство width у текста, то он чудесным образом его сразу видит. Но такой вариант подходит только для дебажных плееров, что совсем не вариант
trace(txt.width); //100
trace(mc.width); //100



Как выйти из ситуации и получить width сразу и актуальный?

KiL33
15.01.2016, 13:19
эту строчку txt.text = "fsdfsdfsd";
перед добавление txt в mc

Xaider
15.01.2016, 14:00
KiL33
Не пойдет, текст динамический и меняется постоянно, при каждом изменении нужно мониторить какого размера стал контейнер с текстом и корректировать его размеры для встраивания в определенную ограниченную область

Добавлено через 8 минут
Вот такой костыль кстати работает. Другого ничего на ум не пришло


import fl.text.TLFTextField;
import flash.display.Sprite;

var txt:TLFTextField = new TLFTextField();
var mc:Sprite = new Sprite();
mc.addChild(txt);
addChild(mc);

txt.text = "fsdfsdfsd";
txt.width;
trace(mc.width); //100

KiL33
15.01.2016, 14:36
Может так
txt.autoSize = "left"
txt.addEventListener(Event.CHANGE, change);

function change(e:Event):void {
trace(mc.width);

}

Правда я не могу сказать, насколько это лучше вашего варианта)