Форум 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)
-   -   Построчный TextFormat (http://www.flasher.ru/forum/showthread.php?t=112189)

Idalgo 20.05.2008 20:22

Построчный TextFormat
 
Есть многострочный TextField, динамический или поле ввода - неважно.
Если задавать ему формат построчно (например шрифт и размер), то общий формат будет содержать шрифт и размер равные null, даже если построчно устанавливались одни и те же значения.

Вот тестовый пример:
Код:

inpText.text = ''
for(var i=0; i<10; i++) {
        inpText.text += i+'\r'
}
for(var i=0; i<10; i++) {
        var tf = new TextFormat()
        tf.size = 20
        tf.font = 'Arial'
        inpText.setTextFormat(i*2,i*2+2,tf)
        var ttt = inpText.getTextFormat(i*2,i*2+2)
        trace(ttt.font+" : "+ttt.size)
}
var ttt = inpText.getTextFormat()
trace('==============')
trace(ttt.font+" : "+ttt.size)

Почему так?

В общем случае размер и название шрифта могут быть разные для разных строк. Хотелось бы получить в результате название шрифта и размер его, если таковые совпадут во всех строках.

iNils 20.05.2008 20:26

У меня в трейсе все в порядке:
Цитата:

Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20
Arial : 20

Idalgo 20.05.2008 20:30

А что выводит в итоге под '==============', если заранее установить для поля любой шрифт и размер, кроме Arial : 20 ?

iNils 20.05.2008 20:56

Было "Myriad Pro : 14"
Стало "Arial : 20"

Idalgo 20.05.2008 21:10

Хм... да, действительно получается.
Но! Если сделать так:
Код:

inpText.text = ''
for(var i=0; i<10; i++) {
        inpText.text += i+'\r'
}
for(var i=0; i<10; i++) {
        var tf = new TextFormat()
        tf.size = (i+1)*8 // <----- разный размер
        tf.font = 'Arial'
        inpText.setTextFormat(i*2,i*2+2,tf)
        var ttt = inpText.getTextFormat(i*2,i*2+2)
        trace(ttt.font+" : "+ttt.size)
}
var ttt = inpText.getTextFormat()
trace('==============')
trace(ttt.font+" : "+ttt.size)

...то в результате получаем null : null
хотя по идее должно быть Arial : null

(или я опять что-то напутал?)

iNils 20.05.2008 21:14

Добавил две строчки.
Код:

inpText.text = '';
inpText.html = true;
for (var i = 0; i < 10; i++) {
        inpText.text += i + '\r';
}
for (var i = 0; i < 10; i++) {
        var tf = new TextFormat ();
        tf.size = i;
        // <----- разный размер
        tf.font = 'Arial';
        inpText.setTextFormat (i * 2, i * 2 + 2, tf);
        var ttt = inpText.getTextFormat (i * 2, i * 2 + 2);
        trace (ttt.font + " : " + ttt.size);
}
var ttt = inpText.getTextFormat ();
trace ('==============');
trace (ttt.font + " : " + ttt.size);
trace (inpText.htmlText);

А теперь посмотрите на бардак (результат) в трейсе.

Idalgo 20.05.2008 23:53

Почему бардак? Вполне ожидаемая разметка.
Но только мне html не нужен в данном случае.
Или без html никак не обойтись?

iNils 21.05.2008 00:26

А вы думаете TextFormat сам по себе работает? Нет, это просто другой способ форматирования, но работает он через те же html теги. И включив html я вам показал реальную картину, а не голый текст.

Idalgo 21.05.2008 00:57

По крайней мере пришли к выводу, что так как мне нужно - не работает :(
Спасибо, iNils
Буду придумывать по-другому.


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

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