Форум 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)
-   -   через CDATA не выводится отформатированный текст (http://www.flasher.ru/forum/showthread.php?t=132518)

vamali 13.11.2009 09:50

через CDATA не выводится отформатированный текст
 
Всем доброе утро!
Хочу вывести отформатированный текст из xml через CDATA, вроде все делаю как надо, однако текст выходит "как есть" с тегами. Я уже пробовала обращатся к нему и через братский узел и по прямой и так и сяк, подскажите в чем косяк?
Вот простой xml

Код:

?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
<pic>
<image>images/T1.jpg</image>
<caption>
![CDATA[<font size="25px" color="990000">заголовок</font>
<font size="18px" color="000000">подзаголок</font>
<font size="18px" color="990000">номер параграфа</font>
<font size="12px" color="000000">текст</font>]]>
</caption>
</pic>
<pic>
<image>images/T2.jpg</image>
<caption>
![CDATA[<font size="25px" color="990000">заголовок</font>
<font size="18px" color="000000">подзаголок</font>
<font size="18px" color="990000">номер параграфа</font>
<font size="12px" color="000000">текст</font>]]></caption>
</pic>
</images>

а вот кусок кода который отвечает за это

Код:

function loadXML(loaded) {
if (loaded) {
 images = this.firstChild;
 image = [];
 description = [];
 total = images.childNodes.length;
 for (i=0; i<total; i++) {
  image[i] = images.childNodes[i].childNodes[0].firstChild.nodeValue;
  description[i] = images.childNodes[i].childNodes[1].firstChild.nodeValue;
}
 firstImage();
} else {
 content = "file not loaded!";
}
}
 xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
this.createTextField("d_txt", 99, 500, 50, 450, 300);
d_txt.border = true;
d_txt.multiline = true;
d_txt.wordWrap = true;
d_txt.html = true;
d_txt.htmlText = xmlData.firstChild.nextSibling.nodeValue;

как я понимаю все дело в этой строчке:
d_txt.htmlText = xmlData.firstChild.nextSibling.nodeValue;
Прошу гляньте одним глазком плиз и намекните хотя бы что ему еще не хватает?

udaaff 13.11.2009 10:15

Код выполняется асинхронно. Вы обращаетесь к xmlData еще до загрузки xml. Присваивайте текст в обработчике onLoad.
Код AS1/AS2:

function loadXML(loaded) {
if (loaded) {
        d_txt.htmlText = xmlData.firstChild.firstChild.childNodes[1].firstChild.nodeValue;
...


vamali 13.11.2009 10:40

неа
не помогает:umnik2:
Код AS1/AS2:

function loadXML(loaded) {
if (loaded) {
        d_txt.htmlText = xmlData.firstChild.firstChild.childNodes[1].firstChild.nodeValue;
        images = this.firstChild;
                image = [];
                description = [];
                total = images.childNodes.length;
                for (i=0; i<total; i++) {
                        image[i] = images.childNodes[i].childNodes[0].firstChild.nodeValue;
                        description[i] = images.childNodes[i].childNodes[1].firstChild.nodeValue;
}
                firstImage();
        } else {
                content = "file not loaded!";
        }
}
                xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
                this.createTextField("d_txt", 99, 500, 50, 450, 300);
d_txt.border = true;
d_txt.multiline = true;
d_txt.wordWrap = true;
d_txt.html = true;

все равно как хтмл не распознает:wacko:

Добавлено через 4 минуты
ой-ой -ой прошу прощенья все заработало
СПасибо огромное!

udaaff 13.11.2009 10:45

Должно все распознаваться, если только нехватка трех скобок в xml -- это не опечатка...

vamali 13.11.2009 11:25

даа .. скобки пропали, но на самом деле они есть
Как ни странно форматирование есть а вот цвет текста почему от остается черный, хотя я ставлю другой.
И еще когда я добавляю код на листание страниц форматирование html пропадает, что за заколдованный круг?:eek:
Код AS1/AS2:

p = 0;
this.onEnterFrame = function() {
        filesize = picture.getBytesTotal();
        loaded = picture.getBytesLoaded();
        preloader._visible = true;
        if (loaded != filesize) {
                preloader.preload_bar._xscale = 100*loaded/filesize;
        } else {
                preloader._visible = false;
                if (picture._alpha<100) {
                        picture._alpha += 10;
                }
        }
};
function nextImage() {
        if (p<(total-1)) {
                p++;
                if (loaded == filesize) {
                        picture._alpha = 0;
                        picture.loadMovie(image[p], 1);
                        d_txt.text = description[p];
                        picture_num();
                }
        }
}
function prevImage() {
        if (p>0) {
                p--;
                picture._alpha = 0;
                picture.loadMovie(image[p], 1);
                d_txt.text = description[p];
                picture_num();
        }
}
function firstImage() {
        if (loaded == filesize) {
                picture._alpha = 0;
                picture.loadMovie(image[0], 1);
                d_txt.text = description[0];
                picture_num();
        }
}

Добавлено через 1 час 15 минут
похоже все-таки обращение к ноду должно быть другое потому что форматирование емсть только у первого, а когда дальше по циклу идешь то уже html не поддерживается:umnik2:

udaaff 13.11.2009 16:44

Цитата:

Как ни странно форматирование есть а вот цвет текста почему от остается черный, хотя я ставлю другой.
Код:

<font size="25px" color="#990000">заголовок</font>
Цитата:

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

vamali 13.11.2009 17:02

да, спасибо Вам большое еще раз:), все поправила сама уже, все работает:victory:


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

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