![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
|
Одно текстовое поле. В нем текст из XML.
Как сделать, чтобы каждый узел XML форматировался по разному? Делаю вот так (фрагмент кода)- if (xml.firstChild.childNodes[i].childNodes[0].nodeName == "title") {
_pyti.pole.htmlText = xml.firstChild.childNodes[i].childNodes[0].childNodes[0].nodeValue;
_pyti.pole.setTextFormat(my_format_1);
}
if (xml.firstChild.childNodes[i].childNodes[1].nodeName == "sub_txt") {
_pyti.pole.htmlText = xml.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue;
_pyti.pole.setTextFormat(my_format_2);
}
Каким решением это можно обойти? |
|
|||||
|
а так не пробывал?
|
|
|||||
|
Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
|
нет ))) и что это дает?
|
|
|||||
|
как вариант: хранить параметры форматирования в атрибутах ноды..
var xml=new XML('<text><line color="0xFF0000" size="12">red text 12</line><line bold="true" size="14">bold text 14</line></text>');
var txtNodes=xml.firstChild.childNodes;
this.createTextField("_txt",0,0,0,0,0);
_txt.autoSize=true;
for(var i=0,begin=0,end;i<txtNodes.length;i++){
_txt.text+=txtNodes[i].firstChild.nodeValue+'\r';
txtNodes[i].b=begin;
txtNodes[i].e=_txt.text.length;
begin=_txt.text.length;
}
for(var i=0;i<txtNodes.length;i++){
var f=new TextFormat();
for(var prop in txtNodes[i].attributes) f[prop]=txtNodes[i].attributes[prop];
_txt.setTextFormat(txtNodes[i].b,txtNodes[i].e,f);
}
|
|
|||||
|
не внимательно прочитал вопрос, что надо ориентироваться по тэгам..
так еще проще, просто форматируем текст готовыми текстформатами .. var xml=new XML('<text><title> title text</title><sub_txt> обычный текст</sub_txt></text>');
var txtNodes=xml.firstChild.childNodes;
var sub_txt=new TextFormat("_sans",10,0x333333);
var title=new TextFormat("_sans",12,0xFF0000);
this.createTextField("_txt",0,0,0,0,0);
_txt.autoSize=true;
for(var i=0,begin=0,end;i<txtNodes.length;i++){
_txt.text+=txtNodes[i].firstChild.nodeValue;
txtNodes[i].f=this[txtNodes[i].nodeName];
txtNodes[i].b=begin;
txtNodes[i].e=_txt.text.length;
begin=_txt.text.length;
}
for(var i=0;i<txtNodes.length;i++){
_txt.setTextFormat(txtNodes[i].b,txtNodes[i].e,txtNodes[i].f);
}
|
|
|||||
|
Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
|
silin
Ты мастер спорта по AS! )) Cпасибо огромное! Последний вариант мне ближе. Поэтому я его тупо списал ))) А хотелось бы еще и понять for(var i=0;i<txtNodes.length;i++){
_txt.text+=txtNodes[i].firstChild.nodeValue;
txtNodes[i].f=this[txtNodes[i].nodeName];
txtNodes[i].b=begin;
txtNodes[i].e=_txt.text.length;
begin=_txt.text.length;
}
- и почему, скажем _txt.setTextFormat(txtNodes[i].b,txtNodes[i].e,txtNodes[i].f); не укатывается в теле первого цикла FOR? Я вот пытаюсь грузить текст их внешнего XML, и всё совсем плохо - не работает (( sub_txt = new TextFormat("_sans", 10, 0x333333);
title = new TextFormat("_sans", 12, 0xFF0000);
//
xml = new XML();
xml.ignoreWhite = true;
xml.load("my_xml.xml");
xml.onLoad = function(ok) {
if (ok) {
_root.createTextField("_txt", 0, 0, 0, 0, 0);
_root._txt.autoSize = true;
//
txtNodes = xml.firstChild.childNodes;
//
for (var i = 0, begin = 0, end; i<txtNodes.length; i++) {
_root._txt.text += txtNodes[i].firstChild.nodeValue+'\r';
txtNodes[i].b = begin;
txtNodes[i].e = _root._txt.text.length;
txtNodes[i].f = this[txtNodes[i].nodeName];
begin = _root._txt.text.length;
}
for (var i = 0; i<txtNodes.length; i++) {
_root._txt.setTextFormat(txtNodes[i].b, txtNodes[i].e, txtNodes[i].f);
}
}
};
|
|
|||||
|
ты все правильно понял: эти begin,end для того, чтобы расставить соотвествующие индексы для форматирования..
а в первом цикле не проходит потому что text там на каждой итерации обновляется и форматирование(предыдущее) слетает.. насчет загрузки: смотри внимательно что грузишь/что приходит.. |
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
можно еще через css
var s:String = '<vasya>test</vasya>';
var css:TextField.StyleSheet = new TextField.StyleSheet ();
css.parseCSS ( 'vasya { color: #00FF00; font-family: Arial,Helvetica,sans-serif; font-size: 18px; font-weight: bold; }' );
this.createTextField ('txt', 1, 0, 0, 150, 100);
// TextField txt;
txt.border = true;
txt.html = true;
txt.styleSheet = css;
txt.htmlText = s;
|
|
|||||
|
Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
|
Цитата:
Выношу этож же текст во внешний XML - текст отображается, но форматироваться не хочет. ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|