Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Точный размер текста в текстфилде (http://www.flasher.ru/forum/showthread.php?t=111099)

ulik 16.04.2008 13:44

Цитата:

Ты наверно не прочитал, что это предложение - на крайний случай. Глаза раскрой.
О: глаза на месте. Даже на крайний случай - не стоит этого делать. Зачем делать из велосипеда болид формулы?

alekslitvinenk >> если я правильно вас понял, то вам нужен текстфилд, который можно сайзить в двух плоскостях (w/h), так ?
Ну, тогда попробуйте брать баунды первой буквы каждой строки.

alekslitvinenk 16.04.2008 15:30

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

Попробую описать проблему несколько иначе:
Как правильно задать высоту текстовому полю, чтобы текст был виден целиком, чтобы даже ничтожная часть символов не скрывалась(а именно так и происходит если использовать
Код:

_myTextField.height = _myTextFiled.textHeight
) ?

В настоящее время использую:

Код:

_myTextField.height = _myTextFiled.textHeight + 4*_myTextFiled.numLines
Но такой способ приращения оказывается слишком избыточным, особенно если сток много, в то же время
Код:

3*_myTextFiled.numLines
может оказаться недостаточно, если строк мало, а шрифт экзотический(например Blades)...
Да, и к размеру шрифта это никакого отношения не имеет.

ulik 16.04.2008 15:37

Да, вроде все номально с autoSize.
Код:

var recordHeight:int=0;

var fo:TextFormat=new TextFormat();
fo.font="любой";
fo.size=26;

var tf:TextField=new TextField();
tf.type=TextFieldType.DYNAMIC;
tf.multiline=true;
tf.wordWrap=true;
tf.condenseWhite=true;
tf.defaultTextFormat=fo;
tf.border=true;
tf.htmlText="Hello world!<br/>Hello world!<br/>Hello world!";
tf.width=150; //для примера
tf.autoSize=TextFieldAutoSize.LEFT; // включили, отсайзили под размер
recordHeight=tf.height; //записали
tf.autoSize=TextFieldAutoSize.NONE; //выключили
tf.height=int(recordHeight); // округлили, подогнали
addChild(tf);


ElLamok 18.04.2008 21:26

Ну а теперь сделайте TextFormat с италиком и шрифтом, например, таймс, передайте туда "f" и увидите, что буква у вас обрезается....
Можно полечить форматированием, например, rightMargin, но, имхо, все равно это плохой хак

silin 19.04.2008 00:13

Код:

function getTextRect(tf:TextField):Rectangle {
       
        var tmpBmp:BitmapData = new BitmapData(tf.width, tf.height, true, 0x00000000);
        tmpBmp.draw(tf);
        var result:Rectangle = tmpBmp.getColorBoundsRect(0xFFFFFFFF, 0x00000000, false);
        tmpBmp.dispose();
       
        return result;
}


etc 19.04.2008 05:57

http://flasher.ru/forum/showthread.php?t=97958&page=6

romantique 02.08.2008 14:29

Простите что не вовремя. Попробуйте:
Код:

txtField.width = txtField.textWidth + 4;
txtField.height = txtField.tetxHeight + 4;

Кажется по 2 пикселя с каждой стороны - это нечто данное свыше и всюду постоянное... тестировал на размерах шрифтов от 1 до не помню, 20 с лишним... Всё идеально было!

s8000_1 03.08.2008 14:24

romantique, для ширины - для разных шрифтов надо разную циферку прибавлять. Точно знаю что для Tahoma - +3.

romantique 03.08.2008 15:52

Ух ты, не знал даже. А есть где нть табличка этих циферок?:) Честно говоря немало неудобств эта штука доставила тем, кому нужно масштабировать что то пиксель в пиксель.

etc 03.08.2008 17:53

Цитата:

Сообщение от romantique (Сообщение 756052)
Ух ты, не знал даже. А есть где нть табличка этих циферок?:) Честно говоря немало неудобств эта штука доставила тем, кому нужно масштабировать что то пиксель в пиксель.

А выше код и ссылки посмотреть лень?


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

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