Свойство TextField
*1001* отлично подходит для определения размера динамических текстовых полей, когда вы уже знаете текстовую строку (но учитываете свойства .multiline
и .wordwrap
), но не поможет при вводе текста поля.
Для ввода текста я бы посоветовал прослушать событие Event.CHANGE
, а затем обновить ширину / высоту на основе количества строк, информации .textWidth
или TextLineMetrics
(например, myTextField.getLineMetrics
).
Вот краткий пример:
var myField:TextField = new TextField();
myField.x = 10;
myField.y = 10;
myField.width = 100;
myField.height = 20;
myField.border = true;
myField.type = TextFieldType.INPUT;
myField.addEventListener(Event.CHANGE, textChangeHandler);
addChild(myField);
function textChangeHandler(evt:Event) {
var buffer:Number = 10;
myField.width = Math.max(100, (myField.textWidth + buffer));
myField.scrollH = 0;
}
Редактировать: О, и если вы хотите, чтобы это работало с .multiline
, то просто добавьте:
myField.multiline = true;
и в функцию textChangeHandler
добавить:
myField.height = myField.textHeight + buffer;