PDA

Просмотр полной версии : цвет текста из XML во флеш


jony_e
09.03.2009, 17:19
Добрый день.
У меня тут небольшая проблема возникла. У меня есть swf-ка, в нее текст подгружается из XML-ки. Так вот, я хочу сделать его разноцветным. Пытался прописать теги в XML но флеш тогда вообще текста не видит. Помогите плиз.
Вот мой текст в XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<proekty>
<proekt caption='ТУТ ХОЧУ РАЗНОЦВЕТНЫЙ ТЕКСТ'></proekt>
</proekty>

текст из переменной caption присваивается текстовому полю во флеше.

nOobCrafter
09.03.2009, 17:26
Или передавать текст отдельным атрибутом, тогда текст из переменой капшион будет определеного цвета, или использовать хтмл разметку, вроде так тоже можно, тогда хоть каждую букву своим цветом.

Fernando Costa
09.03.2009, 17:26
обернуть в <font color...

во флеше текстовое поле рендерить как ХТМЛ

cleptoman
09.03.2009, 17:49
можно хтмл разметкой, но кэпшн придется вытаскивать из атрибута в отдельную ноду

jony_e
09.03.2009, 17:50
или использовать хтмл разметку, вроде так тоже можно, тогда хоть каждую букву своим цветом.
вот примерчик бы наглядный, потому, что если вставлять <font color... то текст флеш не видит.

nOobCrafter
09.03.2009, 17:55
а вы хмл трейсите?... может просто не стоит аттрибут "обрабатывать как хтмл" у текстового поля?
Вот вам в догонку, может поможет:
Загрузка CSS во флеш с последующим применением к подгружаемому txt файлу:

Подготовка:
На главной сцене создайте динамическое текстовое поле.
-----------
Настройки для него:
Instance name: mytext
Var: TextField
Multiline.
Ширина/высота - по вкусу.
-----------
Выделите текстовое поле - > F8 -> Movie Clip
Instance name: mydata

-> Save As: any name
-----------

В папке где сохранили fla сооздайте текстовый файл.
В нем:
p {
color:#000000;
font-family:Arial,Helvetica,sans-serif;
font-style:normal;
font-weight:bold;
font-size:30px;
display:block;
}
a:link {
color:#000000;
text-decoration:underline;
}
a:hover{
color:#999999;
text-decoration:none;
}
a:active{
color:#666666;
}
-----------
-> Cохраните с именем my_styles.css
-----------
В папке где сохранили fla сооздайте текстовый файл.
В нем:
TextField=<p>have2visit:
<a href="http://demiart.ru/forum" target="_blank">demiart.ru</a>
<a href="http://demiart.ru/forum/index.php?showtopic=5729" target="_blank">полезные скриптики</a>
<a href="http://demiart.ru/forum/index.php?showforum=22" target="_blank">flash ветка</a>
</p>
-----------
-> Cохраните с именем text.txt в кодировке UTF-8
-----------
В редакторе, в первом кадре первого слоя:
//
System.useCodepage = true;
var style_sheet = new TextField.StyleSheet();
var css_url = "my_styles.css";
var mytext = "text.txt";
style_sheet.load(css_url);
style_sheet.onLoad = function(ok) {
if (ok) {
mydata.mytext.styleSheet = style_sheet;
mydata.mytext.text = loadVariables(mytext, mydata);
} else {
trace("Ошибка загрузки CSS файла!");
}
};

cleptoman
09.03.2009, 17:56
var my_text:String = "<font color=\"#FF0000\">";

//будем считать , что текстфилд уже существует на таймлайне с именем txt
txt.html = true;
txt.htmlText = my_text;

jony_e
09.03.2009, 18:01
var my_text:String = "<font color=\"#FF0000\">";

//будем считать , что текстфилд уже существует на таймлайне с именем txt
txt.html = true;
txt.htmlText = my_text;
да, но этот цвет будет для всего текста, а если я хочу, что бы только одно слово, где-то в середине, было синее...

cleptoman
09.03.2009, 18:11
var my_text:String = "<font color=\"#FF0000\">красный</font>&nbsp;<font color=\"#00FF00\">зеленый</font>";