автоматическое изменение размера текстового поля в actionscript3 - PullRequest
3 голосов
/ 15 июля 2011

Мне нужно реализовать автоматическое изменение размера текстового поля в actionscript3 (IDE - Adobe Flash Pro CS3).Например, моя текстовая область имеет ширину 100 пикселей, пользователь написал в ней что-то больше 100 пикселей, тогда мое текстовое поле должно стать больше.Есть идеи?

Также я не могу реализовать многострочный вариант: когда текст выходит за пределы текстового поля, он начинает прокручиваться.В типе линии я выбрал «многострочный».

спасибо

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

попробуйте это:

textfield.autoSize = "left";
textfield.multiline = true;
textfield.wordWrap = true;

Надеюсь, это поможет, Роб

1 голос
/ 15 июля 2011

Если вы хотите автоматически изменить размер текстового поля, вы можете использовать свойство textfield.autoSize.

Если вы используете многострочное текстовое поле, то настройка

textfield.autoSize = TextFieldAutoSize.LEFT; 

будет выравнивать текст по левому краю и изменять его размер по вертикали.Если вы используете однострочное текстовое поле, оно изменится вправо.

0 голосов
/ 15 июля 2011

Свойство 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;
...