Автоматическое изменение размера текстового поля в actionscript3
Мне нужно реализовать автоматическое изменение размера текстового поля в actionscript3(IDE - Adobe Flash Pro CS3). Например, моя текстовая область имеет ширину 100 пикселей, пользователь написал в ней что-то, что больше 100 пикселей, тогда мое текстовое поле должно стать больше. есть идеи?
Также я не могу реализовать многострочный вариант: когда текст выходит за пределы текстового поля, он начинает прокручиваться. В типе линии я выбрал "многострочный".
Спасибо
3 ответа
Попробуй это:
textfield.autoSize = "left";
textfield.multiline = true;
textfield.wordWrap = true;
Надеюсь, это поможет, Роб
Если вы хотите изменить текстовое поле автоматически, вы можете использовать textfield.autoSize
имущество.
Когда вы используете многострочное текстовое поле, тогда
textfield.autoSize = TextFieldAutoSize.LEFT;
выровняет текст по левому краю и изменит размер поля по вертикали. Если вы используете однострочное текстовое поле, оно изменится вправо.
TextField
"s .autosize
свойство отлично подходит для определения размера динамических текстовых полей, когда вы уже знаете текстовую строку (но учтите .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;