![]() |
|
||||||||||
|
|||||
|
[+1 10.12.10]
|
Всем привет.
Как вылечить проблему указанной в теме письма? На рисунке в текстовое поле вписана литера "U", гарнитура Tahoma, начертание Italic. Шрифт встроенный. TextField обрезает ее с права, как быть? |
|
|||||
|
Modus ponens
|
Не уверен... но, а вдруг получится с
http://livedocs.adobe.com/flash/9.0/...arBoundaries() и сравнить с размерами поля?
__________________
Hell is the possibility of sanity |
|
|||||
|
[+1 10.12.10]
|
Попробовал вариант с размерами одно символа и вариант с метриками. Работают одинаково(((
Не работают эти варианты. var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "U"; tf.border=true; tf.setTextFormat(new TextFormat("Tahoma",50,0, false, false)); trace("Italic, disabled",tf.getBounds(this), tf.getCharBoundaries(0)); addChild(tf); tf.setTextFormat(new TextFormat("Tahoma",50,0, false, true)); trace("Italic enabled",tf.getBounds(this), tf.getCharBoundaries(0), "\n Metrics:","w: "+tf.getLineMetrics(0).width); //Italic, disabled (x=0, y=0, w=37, h=64) (x=2, y=2, w=33, h=60) //Italic enabled (x=0, y=0, w=37, h=64) (x=2, y=2, w=33, h=60) // Metrics: w: 33 |
|
|||||
|
Modus ponens
|
Тогда, боюсь, прийдется самому организовывать автосайз... Т.е. установить полю какой-нибудь изначальный большой размер, так чтобы буква точно влезла, потом вытащить ее метрики и соответственно уменьшить поле... вряд ли есть какой-то другой метод... Еще, как вариант - посмотреть в сторону новой текст-енджин - может они по-другому считают размер буков?
Да, и еще такой момент. Иногда в шрифтах нет курсивного начертания, и в таких случаях флеш может имитировать курсив просто "наклонив" прямые буквы, тогда, я подозреваю, и метрики не будут отображать реальной ситуации... теоретически можно попробовать рассчитать, на сколько увеличится ширина знака, если его наклонить, зная градус наклона - но это уже что-то из области ядерной физики...
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
а попробуйте autoSize выставлять после того как текст присвоите текстовому полю. Иногда помогает
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Может дело в том что вы сами шрифты не встроили? Вот я примерчик накидал, со встроенными шрифтами выглядит немножко лучше.
Подставляем именно встроенный шрифт и обязательно указываем что он Хотя надо сказать что текст в рамки поля не всегда вписывается( Но зато ничего не обрезается, изображение выводится целиком, просто значки выходят за границу текстового поля.)))
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 09.07.2009 в 15:49. |
|
|||||
|
[+1 10.12.10]
|
Спасибо за внимание к теме. Вопрос , "обрезания Литеры", решился, у поля было выставлено
после их отключения. стало все как в примере SunShadow, но теперь за литерой остается шлейф из пикселей,при перетаскивании,((( Шлеф - дифект, начинается от края который выступает за текстовое поле, далаю так Литера опять начинает обрезаться, шлейф пропадает))) |
|
|||||
|
По идее действительно должно помочь. TextField некорректно возвращает свои размеры. Если текст всегда однострочный, также можно отнаследоваться от TextField и переопределить геттер width. В котором отдавать пересчитанную с помощью getCharBoundaries() ширину.
Тогда правда прийдется обойтись без автосайза. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:35. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|