Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XML: код новой строки (http://www.flasher.ru/forum/showthread.php?t=207212)

Fogflasher 01.04.2014 14:42

XML: код новой строки
 
Всем привет.
Подскажите, как внутри текстового узла XML задать индикатор новой строки (ну так, чтобы абзац делать).

Код AS3:

<quest id="Q001">Предложение 1. Предложение 2. Предложение 3.</quest>

Пробовал вставлять внутрь такого узла тэги типа /n, /r, но они отображаются как есть.
Еще пытался тусануть туда тэг ![CDATA[]] но тоже не работает.

Переменная (типа XML) задана в самом коде класса (то есть я не качаю её извне).

Возможно вообще такое?
Если нет, то может быть есть какой-то другой путь совмещения управляющих символов и текста.

samana 01.04.2014 15:21

Вот что нашлось по этому поводу, но возможно есть и другие варианты. http://www.kirupa.com/web/xml/XMLbasics5.htm
--------------------
Или вот ещё
Код AS3:

var text:String = xml.quest.text().split("\r").join("");


Wolsh 01.04.2014 15:43

Цитата:

Пробовал вставлять внутрь такого узла тэги типа /n, /r, но они отображаются как есть.
слэш не в ту сторону))
Цитата:

Еще пытался тусануть туда тэг ![CDATA[]] но тоже не работает.
попробуйте не тусануть, а вставить как положено.
Можно еще использовать html-форматирование (тоже с CDATA).

Fogflasher 02.04.2014 10:48

samana, Спасибо, вот с таким кодом перенос работает:
Код AS3:

& #10;

А пример ниже мне не удалось адаптировать... Да и как-то сразу он не сильно понятен.
Ведь если мы пытаемся разделить текст по \r а потом пришить пустую строку, то... это же не перевод строки.


Wolsh
, ну просто я по памяти писал пример, на самом деле с правильным слэшем тоже не работает.
А тэг CDATA использовал так:
Код AS3:

<quest id="Q001">Предложение 1. Предложение 2.<![CDATA[\n]]>Предложение 3.</quest>

В результате получаем просто \n и хотя сам тэг CDATA не виден, он не отрабатывает почему-то.

Цитата:

Можно еще использовать html-форматирование (тоже с CDATA).
А какой-нибудь упрощенный пример можно привести?
И вообще есть впечатление, что html-форматирование будет работать если файл извне грузить, а если во Flash IDE редакторе его прописывать, то... гарантий нет.

Wolsh 02.04.2014 11:51

Упрощенный пример
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.text.TextField;
 
        public class Main extends Sprite
        {
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        var xml:XML =
                        <data>
                                <quest id="Q001">
                                        <![CDATA[Предложение 1.<br/>Предложение 2.<br/>Предложение 3.]]>
                                </quest>
                        </data>
 
                        var txf:TextField = new TextField();
                        txf.width = 600;
                        txf.x = 100;
                        txf.y = 100;
                        txf.multiline = true;
                        super.addChild(txf);
                        txf.htmlText = xml.quest.(@id == "Q001").text();
                }
        }
}


Fogflasher 03.04.2014 09:32

Аа, ну да br, совсем забыл про него.

Спасибо, возьму на вооружение.

P.S., оффтоп, Akopally-модэ он, а почему, кстати, с супер:
Код AS3:

super.addChild(txf);

Оно и без него работает.
То есть с this. , если я ничего не забыл, текстфилд добавлен в экземпляр Document Class'a...
Но если super. , то текстфилд добавлен... эээ.. родителю Document Class'a, то есть сразу на stage, что-ли. Это же не халяльно.

Wolsh 03.04.2014 09:58

Метод addChild() принадлежит классу DisplayObjectContainer, даже не Sprite, и уж тем более не Main.
Поэтому super. Указывает, что искать описание/реализацию этого метода надо в классах выше по иерархии наследования.
Наследования, а не иерархии дисплей-листа! Не путайте наследование с композицией, super c parent.


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

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