Изменение текста и получение измеренной ширины во Flex - PullRequest
0 голосов
/ 01 мая 2011

У меня есть текстовый элемент в mxml. Значение текста меняется в зависимости от действий пользователя. Я хочу установить ширину с точным размером текста. Так как свойство width является фактической шириной компонента, мне нужно свойство measureWidth после запуска события FlexEvent.UPDATE_COMPLETE:

textField.addEventListener(FlexEvent.UPDATE_COMPLETE, function(e:FlexEvent):void{
    textField.width = textfield.measuredWidth;
});

Это изменяется только на правильную ширину в первый раз. После этого он может быть только меньше, но не больше. Я прочитал текст и источник UIComponent, и он сказал, что мне нужно вызвать invalidateSize (). Но это работает только в том случае, если я установил свойство visibleWidth NaN. Итак, я сделал функцию установки:

function setText(newValue:String):void {
  textField.text = newValue;
  textField.explicitWidth = NaN;
  textField.invalidateSize();
}

Но это все еще только уменьшается. У меня вопрос: как я всегда могу получить правильное значение measureWidth после события UPDATE_COMPLETE?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Изменение элемента Text на Label решает проблему.

0 голосов
/ 02 мая 2011

Я согласен с некоторыми из комментаторов, что могут быть лучшие альтернативы, которые достигают того же результата.Однако вы можете использовать функцию measureText вашего элемента Text для определения необходимой ширины:

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