Автоматическое изменение размера текстового поля в 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;
Другие вопросы по тегам