Форум 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=111849)

Дружище 09.05.2008 21:50

Динамический текст разного цвета, в одном текстовом поле
 
Доброго всем времени суток. Вопрос мелкий, но фиг знает как сделать. В первом текстовом поле есть слово "Артикул: ", оно красное. Это слово передаётся в переменную "n". Второе текстовое поле чёрного цвета, к его тексу присоединяется переменная "n". Присоединятся-то присоединяется, а вот красный цвет, естественно меняется на чёрный. Можно-ли присоединить один текст к другому, без изменения форматирования первого? Или же, возможно сделать два форматирования текста, в одом текстовом поле?

Код:

...
this.createTextField("my_txt", this.getNextHighestDepth(), 100, 100, 300, 100);
        var my_fmt:TextFormat = new TextFormat();
                my_fmt.color = 0xff0000;
                n = my_txt.text="Артикул: ";
                my_txt.setTextFormat(my_fmt);
...
this.createTextField("one_txt", this.getNextHighestDepth(), 20, 20, 100, 110);
        with (one_txt) {
                border = true;
                autoSize = true;
        }
        var one_format:TextFormat = new TextFormat();
                one_format.color = 0x000000;
                one_txt.text = n+this.Artikul;
                one_txt.setTextFormat(one_format);
...


udaaff 09.05.2008 22:02

Цитата:

Или же, возможно сделать два форматирования текста, в одом текстовом поле?
public setTextFormat([beginIndex:Number], [endIndex:Number], textFormat:TextFormat) : Void

alekslitvinenk 09.05.2008 22:06

Вот так :)
Код:


...
this.createTextField("my_txt", this.getNextHighestDepth(), 100, 100, 300, 100);
 var my_fmt:TextFormat = new TextFormat();
  my_fmt.color = 0xff0000;
  n = my_txt.text="Артикул: ";
  my_txt.setTextFormat(my_fmt);
...
this.createTextField("one_txt", this.getNextHighestDepth(), 20, 20, 100, 110);
 with (one_txt) {
  border = true;
  autoSize = true;
 }
 var one_format:TextFormat = new TextFormat();
  one_format.color = 0x000000;
  one_txt.text = n+this.Artikul;
  one_txt.setTextFormat(0, n.length-1,my_fmt);
  one_txt.setTextFormat(n.length-1, one_format);
...


Дружище 09.05.2008 22:26

Спасибо Udaaff и Alekslitvinenk!

Дружище 09.05.2008 23:04

Alekslitvinenk!, Вы, немного не точно применили форматирование ко второму текстовому полю. Вот смотрите:

Код:

one_txt.setTextFormat(n.length-1, one_format);
Текст, действительно закрасился в красно-чёрный цвет. Только вышеизложенный код не устанавливает формат цвета для второго текстового поля. Чёрное, оно по умолчанию. А применить формат можно вот этим кодом

Код:

one_txt.setTextFormat(one_format);
Т.е. в моём примере необходимо было добавить лишь одну строчку кода, которая форматирует текст первого текстового поля. Причём требование должно быть такое: сначала идёт setTextFormat текстового поля one_format

Код:

one_txt.setTextFormat(one_format);
one_txt.setTextFormat(0, n.length-1,my_fmt);


alekslitvinenk 09.05.2008 23:31

Вобщето, я ничего не понял :)
Я просто удалил последнюю строчку в вашем коде и добавил две других для форматирования текстового поля по частям, сначала форматирования слова "Артикул" а затем для всего остального текста в текстовом поле.

Дружище 11.05.2008 00:26

alekslitvinenk смотрите, one_format должен форматировать текст за словом "Артикул" в чёрный (или в люой другой установленный) цвет. Но текст за словом "Артикул" не форматируется никак. Я пробовал менять цвет в one_format, бесполезно, лишь поменяв две последние строчки (которые добавили Вы) и в верхней убрал все парамметры кроме названия форма, всё заработало.

Код:

one_txt.setTextFormat(one_format);
one_txt.setTextFormat(0, n.length-1,my_fmt);

Пробую сделать такую вещь. В текстовое поле выводится строка. "Артикул" и "Наименование" красные, а "1000" и "Статуэтки" зелёные.

"Артикул 1000
Наименование Статуэтки"

Всё в одном тестовом поле. Пока что не выходит. Есть идея сделать форматирование при помощи html и загрузить всё в динамическое текстовое поле. Слышал что так можно сделать. Буду проверять. Если можете подсказать, не откажусь от совета.

alekslitvinenk 11.05.2008 00:58

Желательно для "Артикул" , "Наименование", "1000" и "Статуэтки" предусмотреть отдельные строковые переменные и затем выполнить форматирование текстового поля 4 раза используя свойство length этих строковых переменных для вычичления начальных и конечных индексов форматирования.
Первый раз, конечно, можно отформатировать сразу всю строку целиком.

Mnilionic 11.05.2008 01:04

что мешает рендерить текст как html и раскрашивать его тегами?
Код:

my_text.html = true;
my_text.htmlText = "<font color='#FF0000'>Артикул:</font> " + articul_value;
my_text.htmlText += "<font color='#00FF00'>Наименование:</font> " + name_value;


Дружище 11.05.2008 18:59

alekslitvinenk, спасибо за подсказки!

Mnilionic, отлично, очень удобно форматировать текст с помощью тегов, в моём случае!


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

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