PDA

Просмотр полной версии : autoSize "center" обрубает заднюю часть динамического текстового поля


Pecher
08.11.2007, 00:02
Есть динамическое текстовое поле, лежащее внутри клипа.
Если ему ставить автосайз центр, то его правая часть немного обрезается (1-2 пикселя). Что самое интересное - если в контекстном меню плеера это дело увеличить - уже ниче не обрезается, а вернуться опять к 100% - опять обрезается.
Ещё заметки:
1) если этот клип перемещать, то в других координатах он уже не обрезается, при возвращении - опять обрезается.
2) если делать автосайз лефт и райт, то проблемы вроде бы не наблюдается.
Но надо именно выравнивание по центру. Без обрезания :)
Кто может помочь?

cherno_belaya
08.11.2007, 00:37
попробуйте TextField._quality

Mnilionic
08.11.2007, 00:40
если одна строка поставь пробелы по краям

iNils
08.11.2007, 00:48
Вообщето, надо примеры выкладывать.

wvxvw
08.11.2007, 13:24
я думаю, что проблема в целых числах (координатах) даже если они целые изначально, то если потом надвое поделить... но эт догадки, сейчас попробовать не могу.

Pecher
08.11.2007, 14:48
>если одна строка поставь пробелы по краям
не помогают пробелы
>я думаю, что проблема в целых числах (координатах)
я тоже так думал, поэтому делал округление (_x = Math.round(_x)) и для текстового поля, и для содержащего его клипа, до и после установки автосайз. Не помогает. Точнее изменения были в лучшую сторону, но полностью эффект не уходил.
_quality щас попробую.

etc
08.11.2007, 14:53
Надо использовать TextFormat с align, а не autoSize.

Pecher
08.11.2007, 14:59
А чем автосайз не катит?
Я попробую алигн, но всё-таки, отчего автосайз в немилости?

etc
08.11.2007, 15:43
Да много от чего, обрезается поле больше, чем нужно, вероятно из-за не очень корректного получения ширины отформатированного текста.
Если нужно сделать выравнивание по центру, то для этого есть соответствующий инструмент, но никак не autoSize. В случае с align подобных проблем не будет.

Pecher
08.11.2007, 15:50
Я думал, что автосайз как раз и есть подходящий инструмент :) Или он задумывался разработчиками для инпут-полей? Если да, то такое обрубание можно объяснить тем, что у инпутов сзади еще присутствует небольшая пустая часть. Уже сталкивался...

Pecher
08.11.2007, 16:55
Первые попытки с ТекстФормат.алигн закончились неудачей :(
Будем искать...

etc
08.11.2007, 17:15
autoSize должен быть выключен.

Pecher
08.11.2007, 17:20
выключил.
Ну происходит так: автосайз сначала включается в конструкторе... Я его отрубаю в онЛоад, и использую формат алигн.

etc
08.11.2007, 17:30
autoSize вообще трогать не надо.

Pecher
09.11.2007, 03:30
В общем, попробовал чистый алигн. Нормально работает, если текст в текстовом поле вмещается. А если текста больше - он просто не вписывается. Изменение _width не даёт эффекта.
Потом попробовал одну из своих задумок: сделал всё как раньше, только тип поставил не динамик, а инпут. Заработало!

Прошу прощенья, _width не в том месте использовал. Но мне не удобно использовать таким образом.
В общем, выводы такие: если есть такая проблема решаем одним из способов:
1) делаем поле не динамик, а инпут и перекрываем ему события мыши (либо enabled, либо, как у меня, верхний клип получает события)
2) либо используем
tFormat.align="center";
...
x_txt.text = "...";
x_txt.setTextFormat(tFormat);
x_txt._width = x_txt.textWidth + 5;

etc
09.11.2007, 04:15
Можно сделать автосайз с центром, получить ширину, выключить автосайз, задать align, задать сохраненную ширину+«чтобы не косячило».

iNils
09.11.2007, 04:26
Меня поражает упрямство Pecher в вопросе предоставления примера с проблемой.
Воссоздать проблему у меня не получается.

Pecher
09.11.2007, 06:06
В следующий раз буду делать пример ;)