Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Текст перестаёт выравниваться по правому краю при переполнении TextField (http://www.flasher.ru/forum/showthread.php?t=148021)

Tarlan 19.12.2010 23:37

Текст перестаёт выравниваться по правому краю при переполнении TextField
 
Выравнивание задано по правому краю. Когда TextField переполняется, текст просто упирается в левый край, не выходя за грани, следовательно выравнивание получается по левому. Как этого избежать?

Код AS3:

var left_txt:TextField = new TextField();
var left_format:TextFormat = new TextFormat(null,25,null,null,null,null,null,null,TextFormatAlign.RIGHT);
left_txt.x = 20;
left_txt.width = 100;
left_txt.height = 40;
left_txt.text = "ABCDEFGHIJKLMNOP";
left_txt.border = true;
left_txt.selectable = false;
left_txt.setTextFormat (left_format);
addChild (left_txt);


КорДум 19.12.2010 23:41

Туманный вопрос. Но попробуйте wordWrap в true поставить.

expl 19.12.2010 23:44

А что если ему принудительно scrollH в int.MAX_VALUE выставить?

Tarlan 20.12.2010 00:14

Уточню вопрос. Под переполнением я имею ввиду переполнение видимой части TextField.
Текстовое поле однолинейное. Если выравнивание стоит по левому краю и поле переполняется, то всё нормально, лишний текст просто исчезает за правым краем. Это логично.
Но в моем случае выравнивание стоит по правому краю, и при увеличении количества текста наступает момент переполнения видимой части TextField, тогда текст упирается в левую границу, лишнее выходит за правую. А мне бы хотелось (и думаю, это было бы логичным), чтобы лишний текст исчезал за левой.
То есть мне не важно отображение всего текста на экране, важно отображение только его правой части, которая помещается в TextField.

bav 20.12.2010 00:21

Попробуйте так:
Код AS3:

var left_format:TextFormat = new TextFormat(null, 25);
left_txt.defaultTextFormat = left_format;
left_txt.autoSize = TextFieldAutoSize.RIGHT;


Tarlan 20.12.2010 00:39

Цитата:

Сообщение от bav (Сообщение 958567)
Попробуйте так:
Код AS3:

var left_format:TextFormat = new TextFormat(null, 25);
left_txt.defaultTextFormat = left_format;
left_txt.autoSize = TextFieldAutoSize.RIGHT;


Да, но так меняются размеры TextField.. а они должны быть постоянными. Вижу, придётся делать так: контролировать, чтобы ширина текста всегда была меньше ширины TextField, а если больше - сразу удалять лишний символ.
Просто меня удивило, что для выравнивания по левому краю у Флеша одна логика, по правому - другая.

samana 20.12.2010 09:56

Если задать размеры и не использовать выравнивание, то получается такой эффект, который вы хотели.
p.s. если я правильно понял
Код AS3:

var tf:TextField = new TextField()
                        tf.text = "12345678910"
                        tf.type = TextFieldType.INPUT;
                        tf.border = true;
                        tf.width = 100;
                        tf.height = 20;
                        addChild(tf)



Часовой пояс GMT +4, время: 12:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.