Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как узнать размер шрифта.. если известна длинна текста (http://www.flasher.ru/forum/showthread.php?t=90966)

StrangeMan 22.01.2007 09:54

просто мне по мимо этого для данного текста нужно ещё и цвет менять, не понял для чего у вас были созданны те стили. Сейчас попробую вернуть обратно. Если не сложно, подскажите изоходя из чего расчитывать размер шрифта

iNils 22.01.2007 10:12

Код:

var txt:TextField = this.createTextField ("txt", 0, 100, 100, 400, 50);
txt.html = true;
txt.autoSize = true;
txt.htmlText = "<font size='64'>W</font><font size='32'>W</font><font size='16'>W</font>";
var fmt1:TextFormat = txt.getTextFormat (0, 1);
trace (fmt1.size);
var fmt2:TextFormat = txt.getTextFormat (1, 2);
trace (fmt2.size);
var fmt3:TextFormat = txt.getTextFormat (2, 3);
trace (fmt3.size);


StrangeMan 22.01.2007 10:22

добавление строчки

Код:

t_sl.t.autoSize = true;
ни к чему не привело. Трейс выдаёт размер текста колторый стоит по усолчанию. Как влияет на всш пример то чт о текстовое поле я создаю не програмно а руками. t_sl.t - текстовое поле

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

var sl_0:TextFormat = new TextFormat(null, 65, 0xFF0000, true);

function setTextAndValign (t:TextField, str:String) {
        t.htmlText = "<br>" + str + "<br><br>";
        var fmt:TextFormat = new TextFormat ();
        fmt.color=sl_0.color;
        fmt.leading = (txt._height - txt.textHeight) / 2;
        t.setTextFormat (0, 1, fmt);
        trace(fmt.color);
}

var txt:TextField = t_sl.createTextField ("txt", 0, 10,10, Stage.width,Stage.height);
                                t_sl.txt.text=xml_text.firstChild.childNodes[_root[("k_"+_root.g_i)+_root.g_k]._yr].childNodes[0];
sl_0.align = "center";
sl_0.bold = true;
t_sl.txt.setNewTextFormat (sl_0);
t_sl.txt.border = true;
t_sl.txt.html = true;
t_sl.txt.multiline = true;
t_sl.t.autoSize = true;
setTextAndValign (t_sl.txt, t_sl.txt.text);
var fmt1:TextFormat = t_sl.txt.getTextFormat (0, 1);
trace (fmt1.size);
var fmt2:TextFormat = t_sl.txt.getTextFormat (1, 2);
trace (fmt2.size);
var fmt3:TextFormat = t_sl.txt.getTextFormat (2, 3);
trace (fmt3.size);


StrangeMan 22.01.2007 14:16

уважаемые гуру этого форума.... мне оень нужна ваша помощь.. в сети больше нет нашёл таких ресуров, по этому обратиться больше не к кому. В книжках которые есть у меня на счёт этого вопроса нет информации...

iNils 22.01.2007 20:06

Вы хотите чтобы весь текст влезал в одну строку?

StrangeMan 23.01.2007 15:55

Нет я хочу чтобы текст(который у меня может быть и в одну сточку и в несколько в зависимости от длинны) влезал в текстовое окно(которое созданно либо в ручную, либо програмно). И нужно чтобы размер шрифта этого текста был максимально большим. Текст я подгружаю.

Я просто даже не могу понять исходя из чего расчитать размер шрифта...

...если у вас есть каие либо мысли то я буду рад им.

iNils 24.01.2007 11:54

Код:

function setMaxFontSize (txt:TextField):Number {
        var fmt:TextFormat = txt.getTextFormat ();
        if (txt.text.length > 1) {
                while (txt.maxscroll == 1 && fmt.size < 128) {
                        fmt.size *= 2;
                        txt.setTextFormat (fmt);
                }
                fmt.size /= 2;
                var a:Number = fmt.size;
                var b:Number = fmt.size * 2;
                var c:Number = a + Math.floor ((b - a) / 2);
                txt.setTextFormat (fmt);
                while (b - a > 1) {
                        fmt.size = c;
                        txt.setTextFormat (fmt);
                        if (txt.maxscroll == 1) {
                                a = c;
                                c = c + Math.floor ((b - c) / 2);
                        } else {
                                b = c;
                                c = a + Math.floor ((c - a) / 2);
                        }
                }
                fmt.size = c;
                txt.setTextFormat (fmt);
        }
        return c;
}
function sample () {
        txt1.text += String.fromCharCode (32 + Math.floor (Math.random () * 60));
        trace (setMaxFontSize (txt1));
}
var txt1:TextField = this.createTextField ("txt1", 1, 100, 100, 200, 200);
txt1.border = true;
txt1.multiline = true;
txt1.wordWrap = true;
txt1.text = "";
setInterval(this, "sample", 100);



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

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