![]() |
|
||||||||||
|
|||||
|
Неожиданно столкнулся с проблемой, когда textWidth и textHeight текстового поля возвращают недостоверные результаты. Для одних шрифтов погрешности почти нет, а для других она весьма значительна. С погрешностью textWidth я уже почти смрился, но вот узнать точный размер textHeight хоть убейте - надо...
Использование LineMetrics тоже к получению достоверных данных не привели. Есть ли у кого-нибудь идея как получить более менее правдивые данные о textHeight ? |
|
|||||
|
Регистрация: Jun 2005
Адрес: Bryansk
Сообщений: 73
|
Если совсем ниче не поможет, а скорость не очень важна - переводи текст на BitmapData и ищи снизу первую строку, где есть хоть одна точка
![]()
__________________
Flash can do it. |
|
|||||
|
Спасибо за совет.
Но дело в том, что скорость как раз-таки и важна, так как все это должно висеть на Event.CHANGE... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Размер глифов или все таки текста с полями?
|
|
|||||
|
Вобщем, есть текстовое поле его должна окружать рамка с маркерами для ресайзинга...
Проблема в том, что я не могу точно посчитать высоту рамки каждый раз когда добавляеться/удаляется новая строка текста... |
|
|||||
|
Регистрация: Jun 2005
Адрес: Bryansk
Сообщений: 73
|
Не берусь судить, но возможно скорости работы с битмапдата хватит для этой задачи...
P.S. Можно ещё поставить для многострочного текстового поля. Тогда, наверное, будет браться height.
__________________
Flash can do it. Последний раз редактировалось Pecher; 16.04.2008 в 13:21. |
|
|||||
|
alekslitvinenk >> а так чем вам не нравится?
import flash.text.TextFormat; import flash.text.TextField; import flash.display.Sprite; import flash.geom.Rectangle; var format:TextFormat=new TextFormat(); format.font="любой_шрифт"; format.size=20; var tf:TextField=new TextField(); tf.defaultTextFormat=format; tf.autoSize=TextFieldAutoSize.LEFT; tf.htmlText="Hello world!"; addChild(tf); var bound:Rectangle = tf.getCharBoundaries(0); // скажем, для 1-ой var sp:Sprite=new Sprite(); sp.graphics.lineStyle(1,0xdd0000); sp.graphics.moveTo(bound.x, bound.y); sp.graphics.lineTo(bound.x+bound.width,bound.y); sp.graphics.lineTo(bound.x+bound.width,bound.y+bound.height); sp.graphics.lineTo(bound.x,bound.y+bound.height); sp.graphics.lineTo(bound.x, bound.y); addChild(sp); Цитата:
Цитата:
))Последний раз редактировалось ulik; 16.04.2008 в 13:26. |
|
|||||
|
Регистрация: Jun 2005
Адрес: Bryansk
Сообщений: 73
|
Цитата:
__________________
Flash can do it. |
|
|||||
|
Цитата:
Если выставить autoSize, то слишком много вещей окажется сломано... |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|